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%3a%2f%2flocalhost%2findex
当登录成功以后,需要重定向回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
location: http://localhost/index
假如把url修改一下,变成这个样子:
http://localhost/login?page=http%3a%2f%2flocalhost%2fcheckout%0d%0a%0d%0a%3cscript%3ealert%28%27hello%27%29%3c%2fscript%3e
那么重定向发生时的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<crlf>
<crlf>
<script>alert(‘hello’)</script>
这个页面可能会意外地执行隐藏在url中的javascript。类似的情况不仅发生在重定向(location header)上,也有可能发生在其它headers中,如set-cookie header。这种攻击如果成功的话,可以做很多事,例如:执行脚本、设置额外的cookie(<crlf>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过大而产生的拒绝访问攻击
四. 身份认证和会话
黑客在浏览器中停用js,防止客户端校验,从而进行某些操作。
防御:
1、隐藏敏感信息。
2、对敏感信息进行加密。
3、session 定期失效
五.重定向攻击
一种常用的攻击手段是“钓鱼”。钓鱼攻击者,通常会发送给受害者一个合法链接,当链接被点击时,用户被导向一个似是而非的非法网站,从而达到骗取用户信任、窃取用户资料的目的。为防止这种行为,我们必须对所有的重定向操作进行审核,以避免重定向到一个危险的地方.
防御:
将合法的要重定向的url加到白名单中,非白名单上的域名重定向时拒之,第二种解决方案是重定向token,在合法的url上加上token,重定向时进行验证.
六.权限与访问控制
能通过url参数的修改达到访问他人页面,例如,黑客能够使用一下的链接去访问在某商城上自己的订单链接
这个时候如果网站没有相关权限验证,那么他也能通过下面的链接去访问其他人的订单。
这样子就会造成商城其他人的隐私的泄露。
防御:
1、添加权限系统,访问的时候可以加上相应的校验。
七.不安全加密存储
防御:
1、加密存储敏感信息
2、不用md5加密
八.sql注入
最常见的攻击方式,所谓sql注入,就是通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令,比如先前的很多影视网站泄露vip会员密码大多就是通过web表单递交查询字符暴出的,这类表单特别容易受到sql注入式攻击.
防御:
1、表单过滤,验证表单提交的合法性,对一些特殊字符进行转义处理
2、数据库权限最小化
3、查询语句使用数据库提供的参数化查询接口,不要直接拼接sql
九.传输层未加密
防御:
1、使用安全的https版本
2、敏感信息使用https传输
3、非敏感信息使用http传输
以上就是“常见的web攻击和防御总结”的全部内容,如果什么需要欢迎登陆gdca数安时代官网咨询客服。