当前位置: 代码迷 >> Web前端 >> 怎么防止http TRACE 跨站攻击
  详细解决方案

怎么防止http TRACE 跨站攻击

热度:605   发布时间:2012-08-22 09:50:34.0
如何防止http TRACE 跨站攻击

?

? ? 什么是跨站攻击?如果一台webserver支持TRACE?和/或 TRACK 方式,那么它一定存在跨站脚本漏洞,将有可能受到跨站攻击。 TRACE和TRACK是用来调试Web服务器连接的HTTP方式。支持该方式的服务器存在跨站脚本漏洞,通常在描述各种浏览器缺陷的时候,把"Cross-Site-Tracing"简称为XST。攻击者可以利用此漏洞欺骗合法用户并得到他们的私人信息。

解决方案:禁用 Trace 和 / 或 Track 方式。

针对 Apache,可以借助 mod_rewrite 模块来禁止 HTTP Trace 请求。只要在各虚拟主机的配置文件里添加如下语句:

RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]?
补充其他 Web Server 的解决方案:

1、Microsoft IIS

使用 URLScan 工具禁用 HTTP Trace 请求,或者只开放满足站点需求和策略的方式。

2、Sun ONE Web Server releases 6.0 SP2 或者更高的版本:

在 obj.conf 文件的默认 object section 里添加下面的语句:

<Client method="TRACE">
AuthTrans fn="set-variable"
remove-headers="transfer-encoding"
set-headers="content-length: -1"
error="501"
</Client>?
3、Sun ONE Web Server releases 6.0 SP2 或者更低的版本:

编译如下地址的 NSAPI 插件:
http://sunsolve.sun.com/pub-cgi/retrieve.pl?doc=fsalert%2F50603

更多信息可以查看以下资料:
http://www.whitehatsec.com/press_releases/WH-PR-20030120.pdf
http://archives.neohapsis.com/ar ... h/2003-q1/0035.html
http://sunsolve.sun.com/pub-cgi/retrieve.pl?doc=fsalert%2F50603
http://www.kb.cert.org/vuls/id/867593

本文出自 “玩linux…做运维…集群..” 博客,请务必保留此出处http://scottlinn.blog.51cto.com/829656/737889

Tomcat配置如下

?

一个典型的配置如下:

<Connector port=”8080” protocol=”HTTP/1.1” maxThreads=”150” 
connectionTimeout=”20000” redirectPort=”8443” allowTrace="false"

其它一些重要属性如下:

  • acceptCount : 接受连接request的最大连接数目,默认值是10
  • address : 绑定IP地址,如果不绑定,默认将绑定任何IP地址
  • allowTrace : 如果是true,将允许TRACE HTTP方法
  • compressibleMimeTypes : 各个mimeType, 以逗号分隔,如text/html,text/xml
  • compression : 如果带宽有限的话,可以用GZIP压缩
  • connectionTimeout : 超时时间,默认为60000ms (60s)
  • maxKeepAliveRequest : 默认值是100
  • maxThreads : 处理请求的Connector的线程数目,默认值为200
  相关解决方案