最新公告
  • 欢迎您光临陆大湿,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 01

    浅谈反编译

    大家好,我是陆大湿。今天主要说下如何防止小程序被反编译与API接口安全,对于这个知识,我了解的比较浅。简单的说,反编译其实就是利用逆向分析,还原软件或者程序源代码,反编译可以作为自己开发软件时的参考。
    通俗讲,反编译就是扒源代码了。微信对于小程序的保护是有限的,对于微信小程序这种用 js 开发的程序来说,保护就显得比较的没意义,就像你在网页里开发的前端 js 一样,对方无论如何都能拿到的,既然小程序前端不安全,那么后端处理就显很重要了。
    官网唯一能做的就是尽可能进行代码混淆,让他们不能方便地进行二次开发,微信开发工具里的上传时代码保护,估计就是这个功能吧。

    02

    常用的方法

    目前我知道的有几种方案,仅供参考

    1、利用云开发,云函数实现核心功能。

    2、利用后端服务器对小程序的API接口进行验证处理。

    3、使用uniapp编译成小程序,经过编译后,无法还原uniapp代码。

    4、使用第三方框架开发生成代码是混淆

    5、使用分包方式上传代码,增加反编译难度。

    03

    小程序接口

    首先声明下,以下内容仅仅个人观点,部分非原创来源于:极客癖。
    以上常用的方法,先说第五点,分包不行,无非就是人家多逆向几个包,再说第四点利用第三方框架开发生成代码是混淆的,这个也是不行的,虽然你生成后代码看不懂,但反编译后的这些代码会进行规整排版,对于程序员来说,还是可以看懂的。第三点,目前就我知道的,可以通过原生小程序代码转成uniapp代码,但是如果是uniapp编译,是无法完整还原uniapp代码,所以这个方法是安全的,最后就来谈谈接口参数加密验证,普通的参数加密验证,人家看到前端代码可以模拟加密访问接口,token也不行,人家也能模拟token啊,所以这里就利用小程序的静默登录功能,也就是验证code,每次打开程序仅有两次数据传输,所以我在每次数据传输时都加一个wx.login生成的code

     

    这种方法就是利用后端服务器对小程序的API接口进行验证处理,这个code非常特殊,它每次生成都不一样,而且用过一次后便作废,本来用于获取用户与该小程序的唯一标识openid,所以这个code也是与你的appid绑定的,别人小程序生成code与你的也不能互通。通过这点,我们后台在每次接收数据时都对code进行登录验证,能登录那肯定是你小程序正常请求,不能登录呢?不是抓包的爆破你接口,就是反编译你小程序用自己appid测试的二五仔,这时我们就直接返回准备好的错误数据。

    关于云开发云函数我了解不是很深入,这里就不班门弄斧了。

    但是云开发云函数有人说代码可以反编译,截至目前我是没有反编译出来过,这种方法也是相当的安全。

    04

    API接口

    大家都知道,不仅仅小程序有API接口,很多软件、程序也是存在API接口,在这过程中肯定都离不开签名验证。在签名验证的时候,发送方和接收方约定一个加密的值,进行生成签名。这里分享下代码示例,当然,高手勿喷,毕竟也是个新手,没有什么编程基础,就去年开始接触这些东西。

    代码示例MD5验证

    <?php//验证签名if ($_REQUEST['sign'] != Createsign()){ echo '无效签名';}else{ echo '签名正常';}
    //创建签名function Createsign(){ $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'; $sign = ''; /*打乱字符串 $randStr = str_shuffle($str); $substr = ubstr($randStr,0,12); */ $substr = substr($str,0,12);  return  md5(md5($substr).md5($sign));}

    代码示例MD5、时间戳、token验证:

    <?php    //token    $token=$_REQUEST['token'];    //时间戳    $timestamp=$_REQUEST['timestamp'];    //签名    $sign=$_REQUEST['sign'];    $tamp=time();    $sjc=$tamp-$timestamp;    $tokenyz=gettoken();    $signyz=md5($token.$timestamp);    if(empty($token)||empty($timestamp)) {    echo "参数不存在";     }    elseif($sjc<0 || $sjc>60){    echo   "请求过期";     }    elseif($tokenyz!=$token){    echo  "token验证失败";     }    elseif($signyz!=$sign){    echo  "签名验证失败";     }    else{    echo   "验证通过";    }function gettoken(){     //这里是生成token的方法 }

    05

    最后说明


    本文由陆大湿整理自网络,如有侵权请联系客服删除!

    如需转载请注明出处:陆大湿

    唯一官网:bbs.ludeqi.com

    1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
    2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!

    谢谢大家的理解!感恩~

    本篇文章来源于微信公众号: 陆大湿


    © 版权声明
    版权声明 陆大湿原创,禁止转载!
    注意 本站发布的文章及教程仅限用于学习和研究目的.请勿用于商业或违法用途,否则后果请用户自负。 本站所有资源不带技术支持,下载资源请24小时内删除,如用于违法用途,或者商业用途,一律使用者承担,本站不承担任何责任!
    本站资源多为网络收集,如涉及版权问题请及时与站长联系邮箱:1104115170@qq.com,我们会在第一时间内删除资源。

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    陆大湿源码解压密码
    https://bbs.ludeqi.com

    发表评论

    发表评论

    • 5021会员总数(位)
    • 239资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 1718稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情
    升级SVIP尊享更多特权立即升级