Security

PCI RapidComply 的 XSS 漏洞

  • June 27, 2015

我有一個託管在 Apache Tomcat 7 伺服器上的網站,該伺服器使用 Authorize.net 網關和商家服務來處理付款。我最近對我的網站進行了所需的 PCI 合規性測試,但由於反射跨站點腳本 (XSS) 漏洞而失敗。他們給出的範例是用腳本替換我的表單參數之一的值:alert(’test’)

我覺得我已經在客戶端解決了這個問題,方法是在送出表單時驗證輸入,如果其中一個輸入無效則不繼續。但是,最近重新掃描失敗了,所以我認為我需要做更多的事情。

我的第一個問題:是否可以通過 URL 將 POST 參數傳遞給伺服器? 我認為這只能通過我不使用的 GET 方法實現。我想弄清楚的是他們是如何送出這些數據的。當然,他們的支持是不存在的,所以我必須自己解決這個問題。

有沒有人有任何使用 PCI RapidComply 的經驗?你用什麼來解決你的 XSS 驗證問題?

謝謝!

您不能通過 URL 傳遞 POST 參數,但這不是 XSS 漏洞所必需的。第三方站點可以使用 JavaScript 將使用者發送到您的站點,並使用他們想要的任何 POST 參數:

<html>
 <body onload="document.forms[0].submit()">
   <form action="https://yoursite.example.com/" method="post">
     <input type="hidden" name="parameter" value="alert('test')">
   </form>
 </body>
</html>

只要攻擊者可以使有權訪問您網站的最終使用者載入此類 HTML 文件(例如,通過放置在廣告網路上的 iframe),他們就可以使使用者在上下文(會話)中在您的頁面上執行任意 JavaScript ) 該使用者的。

防止這種情況的唯一方法是在伺服器端處理它。一般來說,任何送出的使用者數據都應該被清理,並且在輸出 HTML 時也要記住轉義所有內容。通常最後一部分應該由模板庫處理。

引用自:https://serverfault.com/questions/702029