申請公衆平臺開發者模式須要填寫一個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的隨機.