常见的web攻击方法 web攻击与防御技术实战


常见的web攻击方法 web攻击与防御技术实战


一个网站建立以后,如果不注意安全方面的问题,很容易被人攻击,下面就讨论一下几种漏洞情况和防御的办法.
一.跨站脚本攻击(XSS)
跨站脚本攻击(XSS,Cross-site scripting)是最常见和基本的攻击WEB网站的方法 。攻击者在网页上发布包含攻击性代码的数据 。当浏览者看到此网页时,特定的脚本就会以浏览者用户的身份和权限来执行 。通过XSS可以比较容易地修改用户数据、窃取用户信息,以及造成其它类型的攻击,例如CSRF攻击
防御:
1、对于敏感的cookie信息,使用HttpOnly,使document对象中找不到cookie 。
2、对于用户输入的信息要进行转义 。
二. 跨站请求伪造攻击(CSRF)
跨站请求伪造(CSRF,Cross-site request forgery)是另一种常见的攻击 。攻击者通过各种方法伪造一个请求,模仿用户提交表单的行为,从而达到修改用户的数据,或者执行特定任务的目的 。为了假冒用户的身份,CSRF攻击常常和XSS攻击配合起来做,但也可以通过其它手段,例如诱使用户点击一个包含攻击的链接
防御:
1.采用POST请求,增加攻击的难度.用户点击一个链接就可以发起GET类型的请求 。而POST请求相对比较难,攻击者往往需要借助javascript才能实现
2.对请求进行认证,确保该请求确实是用户本人填写表单并提交的,而不是第三者伪造的.具体可以在会话中增加token,确保看到信息和提交信息的是同一个人
三.Http Heads攻击
凡是用浏览器查看任何WEB网站,无论你的WEB网站采用何种技术和框架,都用到了HTTP协议.HTTP协议在Response header和content之间,有一个空行,即两组CRLF(0x0D 0A)字符 。这个空行标志着headers的结束和content的开始 。“聪明”的攻击者可以利用这一点 。只要攻击者有办法将任意字符“注入”到headers中,这种攻击就可以发生
以登陆为例:有这样一个url:
http://localhost/login?page=http://localhost/index
当登录成功以后,需要重定向回page参数所指定的页面 。下面是重定向发生时的response headers.
HTTP/1.1 302 Moved Temporarily
Date: Tue, 17 Aug 2010 20:00:29 GMT
Server: Apache mod_fcgid/2.3.5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
【常见的web攻击方法 web攻击与防御技术实战】Location: http://localhost/index
假如把URL修改一下,变成这个样子:
http://localhost/login?page=http://localhost/checkout
那么重定向发生时的reponse会变成下面的样子:
HTTP/1.1 302 Moved Temporarily
Date: Tue, 17 Aug 2010 20:00:29 GMT
Server: Apache mod_fcgid/2.3.5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
Location: http://localhost/checkout

这个页面可能会意外地执行隐藏在URL中的javascript 。类似的情况不仅发生在重定向(Location header)上,也有可能发生在其它headers中,如Set-Cookie header 。这种攻击如果成功的话,可以做很多事,例如:执行脚本、设置额外的cookie(Set-Cookie: evil=value)等 。
防御:
过滤所有的response headers,除去header中出现的非法字符,尤其是CRLF 。
服务器一般会限制request headers的大小 。例如Apache server默认限制request header为8K 。如果超过8K,Aapche Server将会返回400 Bad Request响应:
对于大多数情况,8K是足够大的 。假设应用程序把用户输入的某内容保存在cookie中,就有可能超过8K.攻击者把超过8k的header链接发给受害者,就会被服务器拒绝访问.解决办法就是检查cookie的大小,限制新cookie的总大写,减少因header过大而产生的拒绝访问攻击

推荐阅读