开发微信公众平台时须要注意的安全问题

申请公众平台开发者模式须要填写一个URL和一个Token, 见下图:php

        若是这个URL和Token被别人猜中了, 而且你不判断消息中的ToUserName属性是否跟你微信号相配, 那么别人的公众账号申请开发者时填写你的URL和你的Token, 别人的公众账号就能把你公众账号的功能盗用了.安全

URL

        你的微信号有时会要求用户绑定一些信息, 通常都是一个HTML5的网页, 这条微信内容其实就是一段HTML. 问题是复制这条消息到其它文本框中, HTML是暴露的, 你的<a href=”XXX”>XXX</a>会暴露出来, 因此别人能够垂手可得的拿到连接地址.微信

        关键是不要让别人根据你的连接猜到你申请开发者时填写的URL, 在我看来, 如下格式的URL都相对不安全的:测试

http://www.XX.com/spa

http://www.XX.com/微信号orm

http://www.XX.com/微信号/weixin.aspx开发

http://www.XX.com/微信号/weixin.ashx字符串

http://www.XX.com/微信号/weixin.phpget

http://www.XX.com/微信号/微信号.aspxit

http://www.XX.com/微信号/微信号.ashx

http://www.XX.com/微信号/微信号.php

等等…

Signature

        在群里常常听别人说图省事, 直接把echostr返回, 根本没顾忌这样作所带来的后果. 若是别人知道了你的URL, 随便填一个Token, 他就顺利验证成功了.

Token

        Token建议使用随机字符串, 如下格式的Token都是相对不安全的:

123

123456

abc

微信号

微信号123

等等...

        若是不巧, 上面两点你都没有注意, 别人可能就会得逞. 上午我就测试了一个, 猜了一次就成功了.

ToUserName

        有人说你不是知道了个人URL和Token, 我改一下Token你不就没用了么. 关键问题是别人以前用你的URL和Token验证成功了, 微信一旦认为你成功了, 之后还会再次验证这个URL和Token么? 因此微信每条消息返回的ToUserName属性不是没用的, 你的程序应该判断是否跟你的微信号相配.

        若是你的URL和Token暴露了, 又没有判断ToUserName, 那么你的益达就真的是别人的益达了.

给微信的建议

1. URL必须是惟一的

        A账号已经用这个URL成功激活开发者模式, 就不该该容许另外一个B账号再用这个URL来激活开发者模式.

2. Token由公众平台生成

        能够在用户输入URL以后, 系统为用户生成Token. 用户在本身的系统中改好Token后再验证, 这样能够保证Token的随机.

相关文章
相关标签/搜索