【发布时间】:2018-05-25 09:58:10
【问题描述】:
我无法修复我们网站上的跨站脚本 (XSS)。我正在清理输入。部分代码如下
$smecompname = $_POST['companyname'];
$companyname = strip_tags(trim($smecompname));
$companyname = htmlspecialchars($companyname);
$companyname = $this->validateInput($companyname);
protected function validateInput($data) {
$data = preg_replace('/[^\p{Arabic}\dA-Za-z0-9 !@#%^&*_.-]/ui', ' ', $data);
$data = htmlspecialchars($data);
$data = html_entity_decode($data);
return $data; }
客户端正在使用某种测试工具,并且有评论是跨站点脚本 (XSS) 可能发生在站点上。请建议我还能做些什么来解决这个问题。
我们可以使用 .htaccess 文件解决此问题吗? 谢谢。
【问题讨论】:
-
如果有人告诉您您的网站对 XSS 攻击持开放态度,您应该询问他们“如何”并提供证据,这样您就可以更好地了解从哪里开始检查和修复您的代码。
-
如果测试团队将输入设置为 ()&%
,则表单公司名称上有一个字段。有 985005 的警报提示,表示它的执行脚本。如果我们从浏览器中的 url 检查它不会发生,因为客户端验证已经到位。但是当他们检查一些工具时,它就会被执行。请指教 -
()&%<acx><ScRiPt>prompt(985005)</ScRiPt>的输入将使用该代码转换为&amp %prompt 985005,这不会创建提示。输出的变量在哪里,它产生什么 html?您可以禁用客户端验证以进行测试,或发出您自己的发布请求,因为您不能依赖它来确保安全。