apache - Apache 重写 XSS 保护问题
问题描述
我们正在为一家货运公司开发一个网站,它最近接受了渗透测试。其中一项攻击是将 XSS 脚本注入请求 url:
ourcompanyhostname.com/abc/authorize<script>alert('xss');</script>
由于我们的网络服务器是 Apache,我们已经通过设置 ff. 在 httpd.conf 文件中。基本上,而不是反映 404 响应错误中的脚本,而是抛出一个通用的 400 响应。
RewriteRule ^/abc/authorize/.*[^A-Za-z0-9./\-_]+ "-" [L,R=400]
问题是当攻击更改为以下攻击时,它不再可以被捕获:
ourcompanyhostname.com/abc/authorize%3c%3cSCRIPT%3ealert(%22XSS%22)%3b%2f%2f%3c%3c%2fSCRIPT%3e
响应仍然是 404 而不是 400。
有没有其他方法可以实现我们想要的?我们已经尝试过执行以下操作,但仍然无法正常工作。我们只希望它在 XSS 攻击完成时返回一个 http 400 错误。
RewriteCond %{REQUEST_URI} ^.*(\*|;|<|>|\)|%0A|%0D|%3C|%3E|%00).* [NC]
RewriteCond %{REQUEST_URI} abc
RewriteRule ^(.*)$ "-" [L,R=400]
解决方案
我认为编码无关紧要,mod_rewrite 在解码后会看到 URL 中的路径。
我认为您可能已经错过了您的原始规则需要在“授权”之后匹配尾部斜杠,而新的恶意请求没有它。
您的最终规则对我来说很好,如果您对特定 URL 获得意外结果,则必须研究 rewritelog/logelvel trace8 输出。
如果 404 是由 Apache 生成的,只需为 404 使用自定义的 ErrorDocument。如果它是由您的 EE 服务器生成的,请在您的 web.xml 中执行相同的操作。
推荐阅读
- ruby - _posts 的 Jekyll 集合未在 _site 上呈现
- r - dplyr 的新数据列表和函数
- node.js - 在 Cent OS 上安装 React JS
- r - 如何使用 e_tooltip_pie_formatter 转换为工具提示中的百分比?
- python - “if False: from typing import Type”是什么意思?
- python - 在python的数据框中找不到项目
- google-chrome - chrome开发工具中的覆盖选项卡,它不会用绿色突出显示加载的css,用红色突出显示未使用的css
- python - 让 Xcode 在项目中运行当前 Python 文件
- ruby-on-rails - 将 Facebook 登录集成到 Rails 6(或 5)应用程序的简单方法是什么?
- python - 使用urllib2在python中发送json数据时如何避免rabbit mq中的坏地图错误