api - 修复 Web 服务器上不安全的 HTTP 方法
问题描述
我的客户在问:以下 Web 服务器向最终用户暴露了多种不同的方法,这些方法可能使 Web 服务面临不同程度的风险。可接受的 Web 方法通常是 GET、POST 和 CONNECT(在 HTTPS 的情况下)。
• 服务器a • 服务器b 发现Web 服务器上存在OPTIONS HTTP 方法 OPTIONS 方法允许攻击者枚举Web 服务器上可用的方法,这些方法允许服务器接受TRACE 方法并使其自身易受HTTP TRACE 攻击跨站点脚本漏洞。这是因为 TRACE 方法只是将用户提供的输入回显给最终用户。
现在如何禁用此方法,如何检查这些以及是否会有任何停机时间来改变它。服务器正在运行centos
解决方案
首先检查 Trace 和 options 方法是否启用。
curl -i -X TRACE <URL>
curl -i -X OPTIONS <URL>
如果 http 响应为 200,则启用这些方法。
禁用并且只允许 GET POST 和 CONNECT
首先要做的是确保 mod_rewrite 已加载。如果您的 apache 配置中缺少 mod_rewrite.so 但您已经安装了它(并且您的安装位置是 /usr/local/apache),则将以下语句添加到您的 httpd.conf 中:
LoadModule rewrite_module "/usr/local/apache/modules/mod_rewrite.so"
然后将以下内容也添加到您的 httpd.conf 文件或 <virtualhost>...</virtualhost> 中:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^(GET|POST|CONNECT)
RewriteRule .* - [F]
</IfModule>
或者仅禁用 TRACE 对于 apache2,可以在主 httpd.conf 文件中添加以下内容:
TraceEnable off
重启阿帕奇
推荐阅读
- c# - Quartz.net 在删除作业时抛出 JobPersistenceException
- python - ModuleNotFoundError:没有名为 packageA.innterPackageA 的模块
- javascript - 如何根据类名获取Id的元素
- javascript - 如何在 React Native 中为 svg 文件的一部分设置动画
- c++ - 来自 iostream 或内存缓冲区的 Apache Arrow 表
- scala - 从 spark/scala 中的 s3 读取时,分区 id 被隐式转换
- nuget - TeamCity上的Nuget还原忽略版本?
- javascript - 在 jQuery 中访问动态变量
- pip - pipenv-2018.11.26 虽然确实存在,但由于 setuptools 无法使用 pip 安装
- javascript - React Js SetState 不起作用,应该在我的代码中做些什么来修复它