Repository navigation
v3.5.25 PAYUNi 信用卡:日誌遮罩卡號、回傳強制驗章
本版是兩個 PAYUNi(統一金流)信用卡 V2 的安全性強化,升級後不需要改任何設定,正常付款流程不變。
1. 除錯日誌不再寫入信用卡敏感資料(#138)
影響對象:有開 PAYUNi 除錯日誌(payuni_payment log)的站台。
問題
信用卡請求參數會原樣寫進 WooCommerce 日誌,包含完整卡號、CVC、有效期限。日誌檔落在主機上,任何能讀日誌的人(主機商、外包工程師、備份檔)都看得到。
修正
寫入日誌前統一遮罩:
| 欄位 | 修正前 | 修正後 |
|---|---|---|
CardNo |
4111111111111111 |
[已遮罩]****1111(只留末四碼) |
CardCVC、CardExpired |
原值 | [已遮罩] |
CreditHash、EncryptInfo |
原值 | [已遮罩] |
陣列、巢狀陣列、JSON 字串、wc_print_r 文字都會套用。送往 PAYUNi 的實際請求內容不變。
注意:舊的日誌檔不會被回頭清理。若曾開過除錯日誌,建議到「WooCommerce > 狀態 > 日誌」刪除舊的 payuni_payment 日誌。
2. 付款回傳缺少 HashInfo 簽章時拒絕處理(#139)
影響對象:使用 PAYUNi 信用卡 V2(含 3D 驗證)的站台。
問題
3D 驗證完成後的瀏覽器回傳(return)與 PAYUNi 幕後通知(notify)是公開網址。舊版只在「有帶 HashInfo」時才驗章,請求故意不帶 HashInfo 就能跳過驗章、直接進入解密與訂單處理。
修正
return/notify 一律要求帶 HashInfo 且驗章通過,否則不解密、不讀取或修改訂單。依 PAYUNi 官方規格,正常的 return/notify 外層一定帶 HashInfo,所以不影響正常付款;非 3D 的同步回應維持原樣。
驗證與已知限制
- 自動測試:整合測試 357 個,356 通過、1 個略過(測試環境未載入 WooCommerce Subscriptions,與上一版相同)。另新增兩支獨立測試(遮罩 10 項、驗章 13 項)全部通過;驗章測試套用舊版程式會失敗。
- 尚未測試:兩項修正都還沒在正式 PAYUNi 環境實際刷卡驗證。
感謝 @rex19938291-gif 貢獻這兩個 PR。