微信网页的安全性

这篇文章其实很早以前就可以写一下了,但是当时担心自己的方案不够安全,所以,没有敢写.

为啥子要做防御呢?

因为,我们这次的产品涉及到了比较隐私的信息,严重点儿说,还会涉及到用户的安全.

所以,至少在前端,不能让第三方可以轻松的获取到用户的信息.

由于这次做的网页,不是单网页程序,所以,每个页面所需要的初始数据,都是在URL中体现的,所以第一步需要对URL进行防御

当然,我们也不希望用户在微信外浏览网页.因为这样他们可以看到请求的参数,而且也不利于我们控制入口~

直接开始吧

一个网页需要获取到点击用户的openid,需要通过微信用户访问https://open.weixin.qq.com/connect/oauth2/authorize?appid=公众号ID&redirect_uri=回调URL

用户点击了授权,或者以前早就授权过了,才会访问跳转的URL,并且带着openid的参数

这一块好像没什么可以攻击的,所以我也没做什么处理

服务器收到了redirectURL的请求的时候,是可以获取到openid的.假设,直接根据openid来返回数据,那么微信所在的手机如果网络数据被抓包.就可以很轻松的知道了如何使用接口不使用HTTPS

那么伪造openid来获取他人的数据,也变得简单了~所以,我给他加了密,用了很多很多位的对称加密算法,把openid做了加密.每次请求都需要openid和eid(我称为加密的id…)
,配对正确,才可以正常的请求,否则就送一个403的大礼包.

这上面算是最后一道防线吧?

以前参与精益防伪项目的时候,学了好多的保密措施,感觉还是蛮有用的~

当然,这一套还存是在问题的.比如说现在的密钥是固定的,如果根据服务器的Mac来生成,或者再建立一个动态的密钥.就可以防止一个服务器被攻破之后,
另外的服务器也被轻松攻破的尴尬现象了.

当然咯

我们不希望用户在微信外防伪网页,最好的方法就是,阻止用户点击右上角的按钮,选择里面的复制链接,分享给朋友,用浏览器打开……

还好Wechat JS SDK里面就做了这个功能,可以控制微信浏览器,隐藏那些按钮~

各位大大如果找到了漏洞,一定要告诉我呀!这个关系到用户的人身安全的!

阅读剩下更多