g5hdyd
g5hdyd
  • 发布:2017-12-15 17:31
  • 更新:2017-12-15 17:53
  • 阅读:3514

关于plus.push.getClientInfo().appid的信息

分类:HTML5+

我在做客户端请求api的时候想做参数签名验证,我的做法很简单就是将请求参数排序然后&连接,然后加个‘盐’然后再md5,这里说到‘盐’这个地方卡住了,因为html5+的这个体系无法‘保密存储配置信息’(配置信息存储到js里面,如果被反编译apk的话很容易获取到这个‘盐’进行相关api试探了),所以我找到了文章【http://ask.dcloud.net.cn/article/12744】其中作者提到可以使用plus.push.getClientInfo().appid把这个信息当做 盐来处理(因为manifest翻遍包获取不到这个文件),通过我的测试我发现以下问题:

  1. 在manifest.json中配置的push.appid与真正获取到的值不相同。
  2. 通过plus.push.getClientInfo().appid方式获取的值会变化,有的时候获取的一样,有的时候获取的不一样。

求问:上面为什么获取的值有的时候不一样呢?有什么方法能在本地秘密存储应用的配置信息吗?谢谢各位。

2017-12-15 17:31 负责人:无 分享
已邀请:
回梦無痕

回梦無痕 - 暂停服务

真机测试获取的和打包获取的appid是不一致的,
另外那个你给的“相关链接”的方法也是不安全的,我下载一个你应用的apk,用zip把里面的一个html解压出来,添加一句获取plus.push.getClientInfo()的JS代码,然后压缩回去替换,安装到手机,照样能获取。
在html+js上做的加密,都是防君子不防小人的,因为随便改一个html都能把代码里的任何东西打印出来。
你要做的是,吧敏感的操作全部放后台,就算别人拿到源码也只能看。就像微信的网页端,你能拿到微信网页端所有的代码,但是你就是什么都做不了。

  • g5hdyd (作者)

    嗯,按照你说的确实是可以的,只是增加了别人破解的时间成本罢了,那也就意味着如果使用h5+的开发方式的话公共api基本上就是100%暴露的,没有办法做签名验证这些操作。


    关于您上面说的真机测试获取的喝打包获取的不一致的问题,我刚才重新确认了一下,平台不同所以获取的不同,ios各个模拟器 ip6 plus ip7等都是一样的,android下的是另外一个不同设备没测试,那按照您这样说的话,这样方法也就是障眼法而已。


    所以防止别人解包,求助‘爱加密’等这样的公司可以么?


    感谢您的回答,谢谢。

    2017-12-15 18:03

  • 回梦無痕

    回复 g5hdyd:爱加密这些不适用我们这种方式的APP

    其实你增加破解成本就行了,比如密钥由plus.push.getClientInfo().appkey+cookie里的某些字段组成,cookie的关键字段由初次打开app时候确定,并期限,过期重新生成,而且每个客户端生成都不一致,js全写在文件里,并加上混淆。

    方法有很多。其实破解的人主要还是看你的app有没有这个破解价值。

    2017-12-15 18:16

  • g5hdyd (作者)

    回复 回梦無痕:感谢回复,谢谢~清楚了。十分感谢

    2017-12-15 18:34

该问题目前已经被锁定, 无法添加新回复