開發微信公衆平臺時須要注意的安全問題

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

相關文章
相關標籤/搜索