Skip to content

v3.5.25 PAYUNi 信用卡:日誌遮罩卡號、回傳強制驗章

Choose a tag to compare

@j7-dev j7-dev released this 14 Oct 09:08
· 3 commits to master since this release

本版是兩個 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。