中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序api簽名驗證的方法

發布時間:2022-03-10 10:55:26 來源:億速云 閱讀:1140 作者:iii 欄目:開發技術

這篇文章主要講解了“微信小程序api簽名驗證的方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“微信小程序api簽名驗證的方法”吧!

用戶數據的簽名驗證和加解密


數據簽名校驗

為了確保 開放接口 返回用戶數據的安全性,微信會對明文數據進行簽名。開發者可以根據業務需要對數據包進行簽名校驗,確保數據的完整性。

  1. 簽名校驗算法涉及用戶的session_key,通過 wx.login 登錄流程獲取用戶session_key,并自行維護與應用自身登錄態的對應關系。

  2. 通過調用接口(如 wx.getUserInfo)獲取數據時,接口會同時返回 rawData、signature,其中 signature = sha1( rawData + session_key )

  3. 開發者將 signature、rawData 發送到開發者服務器進行校驗。服務器利用用戶對應的 session_key 使用相同的算法計算出簽名 signature2 ,比對 signature 與 signature2 即可校驗數據的完整性。

如wx.getUserInfo的數據校驗:

接口返回的rawData:

{  "nickName": "Band",  "gender": 1,  "language": "zh_CN",  "city": "Guangzhou",  "province": "Guangdong",  "country": "CN",  "avatarUrl": "http://wx.qlogo.cn/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKARol6503Iuswjjn6nIGBiaycAjAtpujxyzYsrztuuICqIM5ibXQ/0"}

用戶的 session-key:

HyVFkGl5F5OQWJZZaNzBBg==

所以,用于簽名的字符串為:

{"nickName":"Band","gender":1,"language":"zh_CN","city":"Guangzhou","province":"Guangdong","country":"CN","avatarUrl":"http://wx.qlogo.cn/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKARol6503Iuswjjn6nIGBiaycAjAtpujxyzYsrztuuICqIM5ibXQ/0"}HyVFkGl5F5OQWJZZaNzBBg==

使用sha1得到的結果為

75e81ceda165f4ffa64f4068af58c64b8f54b88c

加密數據解密算法

接口如果涉及敏感數據(如wx.getUserInfo當中的 openId 和unionId ),接口的明文內容將不包含這些敏感數據。開發者如需要獲取敏感數據,需要對接口返回的加密數據( encryptedData )進行對稱解密。解密算法如下:

  1. 對稱解密使用的算法為 AES-128-CBC,數據采用PKCS#7填充。

  2. 對稱解密的目標密文為 Base64_Decode(encryptedData),

  3. 對稱解密秘鑰 aeskey = Base64_Decode(session_key), aeskey 是16字節

  4. 對稱解密算法初始向量 iv 會在數據接口中返回。

微信官方提供了多種編程語言的示例代碼(點擊下載)。每種語言類型的接口名字均一致。調用方式可以參照示例。

另外,為了應用能校驗數據的有效性,我們會在敏感數據加上數據水印( watermark )

watermark參數說明:

參數 類型 說明
watermark OBJECT 數據水印
appid String 敏感數據歸屬appid,開發者可校驗此參數與自身appid是否一致
timestamp DateInt 敏感數據獲取的時間戳, 開發者可以用于數據時效性校驗

如接口wx.getUserInfo敏感數據當中的watermark:

{"openId": "OPENID","nickName": "NICKNAME","gender": GENDER,"city": "CITY","province": "PROVINCE","country": "COUNTRY","avatarUrl": "AVATARURL","unionId": "UNIONID","watermark":
    {"appid":"APPID","timestamp":TIMESTAMP
    }
}

注:此前提供的加密數據(encryptData)以及對應的加密算法將被棄用,請開發者不要再依賴舊邏輯。

感謝各位的閱讀,以上就是“微信小程序api簽名驗證的方法”的內容了,經過本文的學習后,相信大家對微信小程序api簽名驗證的方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南溪县| 北辰区| 宁陕县| 上虞市| 丰县| 承德县| 泾阳县| 北流市| 焦作市| 广灵县| 阳信县| 健康| 恩平市| 额尔古纳市| 玉山县| 贵定县| 建昌县| 寻乌县| 彭州市| 贵德县| 阿拉善右旗| 高青县| 郸城县| 菏泽市| 集贤县| 静乐县| 涿鹿县| 威信县| 彭山县| 黑河市| 乡城县| 蒙阴县| 门头沟区| 克东县| 雅安市| 文登市| 营口市| 华阴市| 兴山县| 和田县| 浦江县|