-修复的基本思路: 限制用户输入的CR(回车符,ASCII 0x0d)和 LF(换行,ASCII 0x0a)字符,或者对CR(回车符,ASCII 0x0d)、 LF(换行,ASCII 0x0a)字符正确编码后再输出,以防止注入自定义HTTP头。 -PHP语言的解决方案: 这种现象往往表现在带有参数传递的网页,只要合理的过滤好就OK啦,PHP语言的一些过滤方法: $post = trim($post); $post = strip_tags($post,""); //清除HTML等代码 $post = ereg_replace("\t","",$post); //去掉制表符号 $post = ereg_replace("\r\n","",$post); //去掉回车换行符号 $post = ereg_replace("\r","",$post); //去掉回车 $post = ereg_replace("\n","",$post); //去掉换行 $post = ereg_replace(" ","",$post); //去掉空格 $post = ereg_replace("'","",$post); //去掉单引号第二个修补思路:
禁用 Web 服务器中的 HTTP TRACE 支持。 针对 Apache Web 服务器和 Microsoft IIS 的可能的变通方法如下:
- Apache HTTP Server:利用 Apache mod_rewrite 模块来拒绝 HTTP TRACE 请求,或只允许符合网站需求和策略的方法。
- Microsoft Internet Information Services(IIS):利用 URLScan 工具来拒绝 HTTP TRACE 请求,或只允许符合站点需求和策略的方法。
1)2.0.55以上版本的Apache服务器,可以在httpd.conf的尾部添加:
TraceEnable off
2)如果你使用的是Apache:
- 确认rewrite模块激活(httpd.conf,下面一行前面没有#):
LoadModule rewrite_module modules/mod_rewrite.so
- 在各虚拟主机的配置文件里添加如下语句:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
注:可以在httpd.conf里搜索VirtualHost确定虚拟主机的配置文件。
AI智能回复搜索中,请稍后...