收藏
回答

小程序的源码会不会泄露?

问题模块 框架类型 问题类型 操作系统版本 手机型号 微信版本
客户端 小程序 Bug iOS 11.3 1863xxxxxxx 6.7.3


微信小程序发布成功之后。 用户有没有可能通过一些特殊的处理方式,来获取到当前微信小程序的源码?


对于这种类似的问题,腾讯官方技术方面,有没有做什么相应的应对措施?


由于一直没有找到,微信小程序的官方技术支持的人工联系方式。所以在这里把问题发布出来,希望各位做技术的同仁、以及小程序的官方技术人员,能够帮忙。


谢谢!



最后一次编辑于  2018-10-23  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

14 个回答

  • 。
    2018-10-24

    试试能不能扒自己的源码

    https://zhuanlan.zhihu.com/p/37667537

    2018-10-24
    赞同 3
    回复
  • mpview🌴 🇨🇳
    mpview🌴 🇨🇳
    2018-10-24

    现在有一种操作叫反编译,确实可以拿到小程序源码,一般接口都会加token,这个token来源又是wx.login时得到的,意思就是服务端那边只有原本的小程序能访问,其他的小程序都不行的。反编译得到的源码里没有project.config.json这个配置文件,不用担心appid暴露,所以别人拿到的只是前端代码,有token验证的并不能正常使用。还有一些小程序源码是经过特殊处理的,被反编译后,都不能运行。

    2018-10-24
    赞同 1
    回复 10
    • 心安
      心安
      2018-10-24

      谢谢!

      如果是反编译的文件里面没有project.config.json这个文件,那么就是说appid不会暴露。

      那么,是否存在这种可能:如果拿到除了project.config.json的所有代码文件,那么我是否可以通过其他的任意一个有效的appid把当前的小程序代码,运行起来?


      2018-10-24
      回复
    • Charb
      Charb
      2018-10-24

      可以的,重新申请一个账号把自己的APPID填进去,然后再在微信后台配置一下requestURL,只要后台接口没有验证,大部分功能都是可以用的(支付除外)

      2018-10-24
      回复
    • 心安
      心安
      2018-10-24回复Charb

      谢谢!

      如果后台接口验证的话, 可以采取什么方式来验证呢?

      2018-10-24
      回复
    • 丹阳
      丹阳
      2018-10-24回复心安

      这就要看你反编译的小程序开发者有没有做安全验证,如果异步请求中带上了用token生成的session,那你就无法换个有效appid去请求别人的接口。但是那些没有前后端交互的小程序,特别是单机版的小游戏,反编译一个换个appid就可以了,冷门一点的你甚至可以直接提交审核,说不定还会过

      2018-10-24
      回复
    • Charb
      Charb
      2018-10-24回复心安

      比如所有请求参数先排序,然后拼接成a=xxx&b=xxxc=xxx的形式,再md5加密一下生成一串字符串,后台接口也按照这个规则生成一个字符串,通过判断这两个字符串是否相等来验证

      2018-10-24
      回复
    查看更多(5)
  • 半寸灰
    半寸灰
    2018-10-23

    会的

    2018-10-23
    赞同
    回复 1
    • 心安
      心安
      2018-10-23

      谢谢!

      你好,对于源码泄露这一块。你有什么好一点的处理方式吗?

      2018-10-23
      回复
  • 卢霄霄
    卢霄霄
    2018-10-23

    现在上传多了混淆的选项,应该可读性变差了,但是只是改改图之类的,应该还是能办到。。

    2018-10-23
    赞同
    回复 8
    • 心安
      心安
      2018-10-23

      谢谢! 

      对于url这一块,混淆的话,能起到作用吗? 

      另外对于url,如果别人获取到源码的话,有什么好一点的处理方式吗?

      2018-10-23
      回复
    • 卢霄霄
      卢霄霄
      2018-10-23回复心安

      你的意思是,不想你的具体url地址被别人知道吗?

      2018-10-23
      回复
    • 心安
      心安
      2018-10-23回复卢霄霄

      我在想,如果Url以及参数不暴露的话。

      即使是源码泄露,那么对于这个小程序系统来说:只是泄露了小程序端的代码,对于系统、数据库数据等,不会造成什么损失吧。

      2018-10-23
      回复
    • 卢霄霄
      卢霄霄
      2018-10-23回复心安

      能举个你觉得有风险的例子吗?

      2018-10-23
      回复
    • 心安
      心安
      2018-10-23回复卢霄霄

      目前我遇到了一个问题:新用户注册,赠送礼品。

      因为源码泄露的原因,导致了某些人使用特殊工具,调用网络接口,批量注册,领取礼品。  其实每个礼品的价值并不高,但是量太多,就损失了不少。

      我的业务的本意是:即使是那种注册成功,之后什么也不操作的僵尸用户,第一次注册也要手动在微信小程序里操作。这样,就不会出现大批量的、仅仅是为了这点礼品就来注册使用的用户。


      2018-10-23
      回复
    查看更多(3)
  • 继勇
    继勇
    2018-10-23

    即时小程序做到代码完全不泄露,也有N种方法拿到你的URL和参数,它和小程序关系真不大。

    2018-10-23
    赞同
    回复 2
    • 心安
      心安
      2018-10-23

      谢谢!

      你好。我的想法是:网络传输过程中,可以对参数通过特定的规则进行加密。

      如果小程序源码不泄露的话,那么加密规则同样泄露不了。这样,最终对于系统,以及系统数据也不会造成影响。

      2018-10-23
      回复
    • Charb
      Charb
      2018-10-24

      小程序跟后台开发者商量一个参数加密规则,小程序请求接口是按照规则生成一个key,传给后台,后台也通过这个规则生成一个key,这两个key对比一下,这样就可以判断数据是否在传输过程中被修改了

      2018-10-24
      回复
  • 张新永
    张新永
    2018-10-24

    在网上搜索,有很多帖子都介绍了如何获取小程序源代码。这个只能通过对接口进行加密处理了。

    2018-10-24
    赞同
    回复 1
    • 心安
      心安
      2018-10-24

      谢谢!

      你有什么好一点的,可以对接口做处理的方式吗?

      2018-10-24
      回复
  • 477800969
    477800969
    2018-10-24

    研究的方向错了。

    客户端(前端)历来没有绝对的安全,只要有人想破解,客户端的安全机制立马就会土甭瓦解。只要代码要在客户端运行,就有能力研究出来程序的运行机制。

    所有前端只能简单的设置一道防护机制,防君子不防小人。小程序的包拿到后需要再反编译一下就是这个道理。

    现在所有的公司都是在做数据上的安全防护,这一道把好关了,就随便他们折腾。


    导致了某些人使用特殊工具,调用网络接口,批量注册,领取礼品


    后台可以做大量的限制,增加小人们的完成这一流程的成本。比如,限制注册,领取礼品要求,实际得到礼品收益的要求,等等。。。。


    大多数都是僵尸用户。”, “能超过七成的用户都是忠实的用户


    哪个公司都没有办法避免僵尸用户,如果用户量级没有千万级或者更高,或者对服务器产生压力,就不用考虑,可以对每个用户做有效识别,或者打上标签,真要是胆大,半年后对僵尸用户做一次清理,误伤一两个有效用户,也在可以接受的范围内。


    以上只是鄙人一些建议,希望帮到楼主

    2018-10-24
    赞同
    回复 2
    • 心安
      心安
      2018-10-24

      谢谢!

      你意思是,这个问题,已经不能从技术层次解决了对吧?而是要考虑在业务逻辑、业务流程上做限制。对吧?


      其实当前我这个小程序面向的用户,并不是所有人,而是特定某个行业里面的一些人员。如果是少数“薅羊毛”的存在,我可以接受。按照流程在小程序内部注册,领取礼品等等,这些毕竟是通过正常的流程完成的操作,遵守了“游戏”规则。


      但是目前为止这种用户数量,已经远远超过了正常注册人员数量。对于这种通过特殊工具,批量注册来获取礼品的人,我还是希望能够在技术上能够做到一定程度上的限制。


      另外,诚挚的感谢你的建议。

      2018-10-24
      回复
    • 477800969
      477800969
      2018-10-24

      哈,只是简单探讨一下,不算是特别有用的建议。


      有时候技术也是有局限性的

      比如说,游戏的外挂,顶级公司也没有办法,靠谱的做法是频繁更新验证策略,增加外挂的跟随成本。

      比如说,微信相关的灰产软件,微信的做法是封号处理。

      比如说,前一段时间,比较火的月饼事件,最后开除员工(我是无法接受这样的做法),后台相应修复。

      。。。


      以上事件,大部分还是在自有平台上发生的,我们使用的小程序是在一个第三方平台托管运行,受制更多。


      看吧,类似的问题,最后都不是以技术手段作为终结,这也是没有办法的办法。软件行业只能是先有矛,再有盾,而且是一个时时修复的盾。


      所以只能从去他角度去解决问题了。

      2018-10-24
      回复
  • 田振海
    田振海
    2018-10-24

    对待“薅羊毛”的问题一般都是几个方面综合考虑的:

    业务上增加人机交互的方式,尽量避免脚本调用的情况,比如:加验证码(图文、动态、滑块等等)的方式,

        技术上在接口请求上增加防重放、防参数串改机制;增加用户属性的识别标准,比如通过对羊毛党手机号的号段黑名单过滤等方式、比如接入一些第三方的工具来判断用户是否存在刷单风险;公司如果有能力的话可以建立自己的风控系统,具体的设计可以参考淘宝的防刷的风控系统和京东的风控系统;

    2018-10-24
    赞同
    回复 2
    • 心安
      心安
      2018-10-24

      谢谢!

      技术上在接口请求上增加防重放、防参数串改机制;


      如果源码泄露的话,这种规则也就没什么的作用了吧?

      你的意思应该是,主要还是在业务流程上来限制吧?

      2018-10-24
      回复
    • 田振海
      田振海
      2018-10-25回复心安

      源码泄漏毕竟是对一些高级的羊毛党而言的,这种事就是不断增加羊毛党的薅羊毛成本,从而控制这种比例的。技术上还是有其他限制方式的,这种事一般都是两种思想、发生前的风控预防,发生后的补救措施,比如用户拉黑、限制使用等等,多和公司运营的人员讨论,去寻找羊毛党的共性,然后再去做相应的防护和限制。

      2018-10-25
      回复
  • Yoฉันคิดถึง
    Yoฉันคิดถึง
    2018-10-24

    只要你有js,就能反编译,防不住的,这个论坛里就有人发过破解源码的帖子

    2018-10-24
    赞同
    回复
  • 鲤子
    鲤子
    2018-10-24

    毕竟是前端,说获取不到那是假的,网上大把的文章教程反编译,但是上传的时候会进行加密混淆让可读性不那么高。所以一些安全性,重要的逻辑业务最好在后端处理(也应该说必须在后端处理),后端多加层验证层,来判断客户端传入的是否合法,就算别有用心的人扒了你的小程序源码但是接口还是用不了的。

    2018-10-24
    赞同
    回复