新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)小程序教程:微信小程序安全指引·通用
通用
接口鑒權(quán)
接口鑒權(quán)是指后臺(tái)接口(包括自建后臺(tái)接口與云函數(shù))在被調(diào)用時(shí)需要對(duì)本次接口調(diào)用進(jìn)行權(quán)限校驗(yàn),否則容易發(fā)生越權(quán)行為。如商品刪除接口,后臺(tái)在收到請(qǐng)求時(shí)應(yīng)當(dāng)校驗(yàn)調(diào)用者的身份信息(如 openid、 ip 地址、開發(fā)者自定義的登錄信息等),只有指定用戶才可以通過校驗(yàn)進(jìn)行刪除。

越權(quán)通常分為平行越權(quán)和垂直越權(quán):
- 平行越權(quán)
平行越權(quán)是指相同角色之間的越權(quán)。 A1、 A2 都是普通用戶, A1 通過請(qǐng)求后臺(tái)接口 userinfo.php?id=A1 來獲取用戶 A1 自己的信息,如果 userinfo.php 沒有進(jìn)行權(quán)限校驗(yàn),用戶 A1 把請(qǐng)求改為 userinfo.php?id=A2 便可以獲取到 A2 用戶的信息,造成 A2 用戶信息的泄露。 - 垂直越權(quán)
垂直越權(quán)是指不同角色之間的越權(quán)。 B1 是管理員, B2 是普通用戶,管理員 B1 通過請(qǐng)求后臺(tái)接口 getalluserinfo.php 可以獲取所有注冊(cè)用戶的信息,如果 getalluserinfo.php 沒有進(jìn)行權(quán)限校驗(yàn), B2 用戶也可以請(qǐng)求 getalluserinfo.php 來獲取所有注冊(cè)用戶的信息,出現(xiàn)越權(quán)行為。
開發(fā)建議:
- 敏感數(shù)據(jù)、能力相關(guān)接口需要在后臺(tái)進(jìn)行鑒權(quán)。通??尚r?yàn) openid、 IP 地址、自定義登陸態(tài)等信息。
- 鑒權(quán)邏輯應(yīng)放在后臺(tái)進(jìn)行,不應(yīng)在小程序前端以隱藏頁(yè)面、隱藏按鈕等方式來代替。參照原則4。
- 鑒權(quán)代碼示例(僅供參考)
- 自建后臺(tái)鑒
function actionDelete(){ $item_id = $_POST["item_id"]; $openid = $_POST["openid"]; $ip = $_SERVER['REMOTE_ADDR']; $user_role = $_SESSION["user_role"]; if ($openid === "xxx" && $ip === "192.168.0.101" && $user_role === "admin") { // 進(jìn)行刪除操作 // ... return 0; } else { // 記錄非法請(qǐng)求 // ... return -1; } } -
云函數(shù)接口鑒權(quán)
exports.main = async (event, context) => { const { OPENID, APPID, UNIONID } = cloud.getWXContext(); if (OPENID === "xxx") { // 進(jìn)行刪除操作 // ... } else { // 記錄非法請(qǐng)求 // ... } }
- 自建后臺(tái)鑒
代碼管理與泄漏
- 當(dāng)使用 git、 svn 等版本管理工具時(shí),會(huì)產(chǎn)生 .git 等目錄。某些編輯器或軟件也會(huì)在運(yùn)行過程中生成臨時(shí)文件。若這些目錄或文件被帶到生產(chǎn)環(huán)境,則可能發(fā)生源碼泄漏。
- 使用小程序代碼管理平臺(tái)或 github 等第三方平臺(tái)時(shí)需要注意項(xiàng)目權(quán)限,不要公開敏感、內(nèi)部項(xiàng)目。
開發(fā)建議:
- 備份文件和版本管理工具產(chǎn)生的文件不要同步到 Web 目錄下。
- 禁止外部訪問 .git 等目錄與文件。
- 在小程序代碼管理平臺(tái)等管理平臺(tái)內(nèi)配置適當(dāng)?shù)脑L問權(quán)限。
小程序
信息泄露
敏感信息是指一旦泄露可能會(huì)對(duì)開發(fā)者的業(yè)務(wù)、合作伙伴和用戶帶來利益損害的數(shù)據(jù),包括但不限于帳號(hào) Appsecret、特權(quán)帳號(hào)信息、后臺(tái)加密密鑰、登錄賬戶密碼、用戶身份證號(hào)、手機(jī)號(hào)、銀行卡號(hào)等。
開發(fā)建議:
- 敏感信息不應(yīng)以明文、注釋、可逆的編碼方式(如 base64)、不安全散列函數(shù)(如 MD5、 SHA1)等形式出現(xiàn)在小程序文件內(nèi)。
- 部分敏感信息如用戶的銀行卡號(hào)、手機(jī)號(hào)等需要用于展示的,需要進(jìn)行脫敏處理。常用脫敏規(guī)范如下:
敏感信息類型 展示樣例 姓名 名字只有兩個(gè)字,對(duì)第一個(gè)字打碼,如:*三。 多于兩個(gè)字,只保留第一個(gè)和最后一個(gè),其余都打碼,如:王*四、歐**五 身份證 只顯示第一位和最后一位,如:3****************1 手機(jī)號(hào) 除去手機(jī)國(guó)際碼后,手機(jī)號(hào)位數(shù)不少于10位時(shí),只顯示前三位和最后兩位,如:156******77。手機(jī)號(hào)位數(shù)少于10位時(shí),只顯示前兩位和后兩位,如:12*****89。國(guó)家碼可以完全顯示。 銀行卡 只顯示最后4位,如:************1234 - 如果小程序存在敏感信息泄露的問題,微信開放平臺(tái)將有可能下架該小程序,并暫停該小程序的相關(guān)服務(wù)。
網(wǎng)站標(biāo)題:創(chuàng)新互聯(lián)小程序教程:微信小程序安全指引·通用
文章出自:http://m.fisionsoft.com.cn/article/djggpsj.html


咨詢
建站咨詢
