PCI RapidComply的XSS漏洞

我有一个托pipe在Apache Tomcat 7服务器上的网站,该服务器使用Authorize.net网关和商家服务来处理付款。 我最近在我的网站上运行了一个必要的PCI合规性testing,并且由于reflection的跨站点脚本(XSS)漏洞而失败。 他们给出的例子是用脚本replace我的一个表单参数的值: alert('test')

我觉得我已经在客户端通过在表单提交时validationinput来解决这个问题,如果其中一个input是无效的,那么就不能继续。 不过,最近重新扫描失败了,所以我觉得我需要做更多。

我的第一个问题: 是否有可能通过URL传递POST参数到服务器? 我以为这是唯一可能的GET方法,我不利用。 我想弄清楚他们是如何提交这些数据的。 当然,他们的支持是不存在的,所以我必须自己解决这个问题。

有没有人有PCI RapidComply的经验? 你用什么来解决你的XSSvalidation问题?

谢谢!

您无法通过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文档(例如通过放置在广告networking上的iframe),他们可以让用户在你的页面上下文(会话)该用户。

防止这种情况的唯一方法是通过处理服务器端。 一般来说,提交的任何用户数据都应该进行消毒处理,并且在输出HTML时还要记住将所有内容都转义出来。 通常最后一部分应该由一个模板库来处理。