申请公众平台开发者模式须要填写一个URL和一个Token, 见下图:php
若是这个URL和Token被别人猜中了, 而且你不判断消息中的ToUserName属性是否跟你微信号相配, 那么别人的公众账号申请开发者时填写你的URL和你的Token, 别人的公众账号就能把你公众账号的功能盗用了.安全
你的微信号有时会要求用户绑定一些信息, 通常都是一个HTML5的网页, 这条微信内容其实就是一段HTML. 问题是复制这条消息到其它文本框中, HTML是暴露的, 你的<a href=”XXX”>XXX</a>会暴露出来, 因此别人能够垂手可得的拿到连接地址.微信
关键是不要让别人根据你的连接猜到你申请开发者时填写的URL, 在我看来, 如下格式的URL都相对不安全的:测试
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
等等…
在群里常常听别人说图省事, 直接把echostr返回, 根本没顾忌这样作所带来的后果. 若是别人知道了你的URL, 随便填一个Token, 他就顺利验证成功了.
Token建议使用随机字符串, 如下格式的Token都是相对不安全的:
123
123456
abc
微信号
微信号123
等等...
若是不巧, 上面两点你都没有注意, 别人可能就会得逞. 上午我就测试了一个, 猜了一次就成功了.
有人说你不是知道了个人URL和Token, 我改一下Token你不就没用了么. 关键问题是别人以前用你的URL和Token验证成功了, 微信一旦认为你成功了, 之后还会再次验证这个URL和Token么? 因此微信每条消息返回的ToUserName属性不是没用的, 你的程序应该判断是否跟你的微信号相配.
若是你的URL和Token暴露了, 又没有判断ToUserName, 那么你的益达就真的是别人的益达了.
A账号已经用这个URL成功激活开发者模式, 就不该该容许另外一个B账号再用这个URL来激活开发者模式.
能够在用户输入URL以后, 系统为用户生成Token. 用户在本身的系统中改好Token后再验证, 这样能够保证Token的随机.