# 適用人群
本文檔面向使用微信支付商家轉(zhuǎn)賬到零錢 API 的開發(fā)者和業(yè)務(wù)人員。
# 前言
本文檔的目的是最大限度地降低風(fēng)險,保護商戶資金安全。商家轉(zhuǎn)賬 API 升級了安全防控體系,但是如果商戶在集成和使用時出現(xiàn)安全漏洞,仍會造成商戶資金損失。因此,我們強烈建議商戶開發(fā)者嚴格遵循本文檔中的安全指南與最佳實踐。
我們相信,商戶嚴格遵循安全最佳實踐,合理配置安全策略,采取防御性編程,并持續(xù)監(jiān)控與審計,可以最大限度地減輕風(fēng)險,保護自己的資金安全。我們衷心希望本文檔可以成為您開發(fā)與運營過程中安全的重要參考。如有任何安全疑問,請隨時與我們聯(lián)系。
# 主要風(fēng)險
使用商家轉(zhuǎn)賬 API 的商戶系統(tǒng),存在以下主要風(fēng)險:
- 商戶自建系統(tǒng)漏洞
- 商戶付款業(yè)務(wù)邏輯漏洞
- 商戶 API 密鑰泄露
特別是商戶自建系統(tǒng)漏洞容易被黑產(chǎn)團體發(fā)現(xiàn)和利用。為了應(yīng)對這些風(fēng)險,微信支付提供了一系列的安全防御手段。但是這些措施的有效性還依賴于商戶的正確集成與謹慎使用。
# 安全實踐
# 驗證應(yīng)答簽名
商戶系統(tǒng)在接收到微信支付 API 應(yīng)答時,應(yīng)始終驗證該應(yīng)答的數(shù)字簽名。如果簽名驗證成功,則表明該應(yīng)答確實來自微信支付。如果不成功,則表明應(yīng)答有安全風(fēng)險,不應(yīng)被商戶系統(tǒng)信任。
簽名驗證是一種重要的安全最佳實踐,可以有效防御中間人、重放攻擊等威脅。它確保商戶系統(tǒng)只處理真實的、未被篡改的、來自微信支付的應(yīng)答,從而保護系統(tǒng)的穩(wěn)定和安全。微信支付強烈建議商戶系統(tǒng)對所有微信支付 API 驗證簽名。
# 設(shè)定合理的額度
商家轉(zhuǎn)賬 API 提供了一組轉(zhuǎn)賬額度限制:
- 商戶單日轉(zhuǎn)賬額度:初始額度10萬元。商戶管理員可通過商戶平臺 設(shè)置單日轉(zhuǎn)賬額度 。
- 商戶單筆轉(zhuǎn)賬限額:針對不同場景微信支付設(shè)置了不同的商戶單筆額度,不支持調(diào)整。商戶應(yīng)根據(jù)業(yè)務(wù)實際情況 申請合適的使用場景 ,并在 發(fā)起批量轉(zhuǎn)賬 時傳入對應(yīng)場景 ID。
- 商戶單日向單用戶轉(zhuǎn)賬限額:額度為2萬元,不支持調(diào)整。
- 轉(zhuǎn)賬驗密的免密額度:額度最高為2萬元。 設(shè)置免密額度 后,在免密額度內(nèi)的轉(zhuǎn)賬無需驗密管理員確認。
商戶運營人員應(yīng)合理設(shè)定商家轉(zhuǎn)賬的各個額度,避免設(shè)置過大,可有效減少商戶側(cè)系統(tǒng)出現(xiàn)安全問題時的資金損失。
# 設(shè)置付款來源 IP
在使用商家轉(zhuǎn)賬 API 時,必須 設(shè)置付款來源 IP 。設(shè)置后,僅指定 IP 可調(diào)用商家轉(zhuǎn)賬 API。該項設(shè)置可避免商戶 API 密鑰泄露后,“壞人”使用陌生 IP 發(fā)起調(diào)用。
# 關(guān)注安全提醒
微信支付會檢測商戶調(diào)用商家轉(zhuǎn)賬的異常行為。當(dāng)檢測到異常,將通過以下兩種方式通知安全聯(lián)系人:
- 微信支付客服電話95017
- 微信支付安全中心的“風(fēng)險監(jiān)控”消息
商戶應(yīng)將商戶系統(tǒng)的安全或研發(fā)人員 設(shè)置為安全聯(lián)系人 (opens new window) 。安全聯(lián)系人應(yīng)注意接聽95017的電話,及時關(guān)注、處理風(fēng)險監(jiān)控消息。
若商戶確認商家轉(zhuǎn)賬異常,暫時未排查到具體原因,可考慮先 關(guān)閉API發(fā)起轉(zhuǎn)賬方式 停止 API 接口發(fā)起轉(zhuǎn)賬。
# 保護敏感信息
當(dāng)明細轉(zhuǎn)賬金額超過2000元時,發(fā)起批量轉(zhuǎn)賬時需傳入加密后的用戶姓名。用戶姓名屬于敏感信息,受到合規(guī)限制,商戶應(yīng)將其加密后存儲在數(shù)據(jù)庫中。
# 設(shè)置收款用戶列表
在以下的使用場景中,只允許向 收款用戶列表 中的用戶轉(zhuǎn)賬:
- 傭金報銷
- 企業(yè)報銷
- 企業(yè)補貼
- 服務(wù)款項
- 采購款項
如果你的業(yè)務(wù)符合以上場景,請在發(fā)起批量轉(zhuǎn)賬時指定對應(yīng)的場景 ID,并將員工或合作伙伴添加為收款用戶,以避免給外部用戶轉(zhuǎn)賬。
# 使用安全醫(yī)生檢測漏洞
安全醫(yī)生是微信支付提供給商戶的一個免費安全服務(wù)。它可以幫助商戶檢測自建系統(tǒng)的漏洞,發(fā)現(xiàn)可能影響商戶的安全問題,并提供修復(fù)建議,為商戶資金安全保駕護航。
一旦安全醫(yī)生檢測到問題,它會生成一份報告,報告包含:
- 漏洞的原因
- 風(fēng)險等級(高中低)
- 漏洞可能造成的影響
- 修復(fù)建議
按照報告中的修復(fù)建議,商戶應(yīng)完善網(wǎng)站的安全設(shè)置,修復(fù)系統(tǒng)漏洞,有效降低安全風(fēng)險,更安全地使用商家轉(zhuǎn)賬。
# 安全建議
除了以上實踐,商戶側(cè)系統(tǒng)需要考慮以下的安全措施:
- 強化商戶側(cè)系統(tǒng)的身份認證和權(quán)限機制,避免管理員的弱密碼
- 嚴格管理商戶 API 密鑰,加密或使用云廠商提供的 密鑰管理系統(tǒng) (opens new window) 存儲密鑰
- 只使用 HTTPS,且采用 TLSv1.2-
- 商戶側(cè)轉(zhuǎn)賬接口對輸入做有效性校驗
- 嚴格限流,對頻繁的轉(zhuǎn)賬請求設(shè)置限流機制
- 強化風(fēng)控策略,檢測可疑的轉(zhuǎn)賬
- 強化商戶側(cè)轉(zhuǎn)賬接口的監(jiān)控和異常告警
- 強化商戶側(cè)系統(tǒng)的審計,并及時修復(fù)漏洞
- 職責(zé)分離,發(fā)起轉(zhuǎn)賬的操作員和轉(zhuǎn)賬驗密人應(yīng)相互分離