欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-12 16:36:28
一个网站建立以后,如果不注意安全方面的问题,很容易被人攻击,下面就讨论一下几种漏洞情况和防御的办法.一.跨站脚本攻击(xss)跨站脚本攻击(xss,cross-site scripting)是最常见和...

一个网站建立以后,如果不注意安全方面的问题,很容易被人攻击,下面就讨论一下几种漏洞情况和防御的办法.

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

一.跨站脚本攻击(xss)

跨站脚本攻击(xss,cross-site scripting)是最常见和基本的攻击web网站的方法。攻击者在网页上发布包含攻击性代码的数据。当浏览者看到此网页时,特定的脚本就会以浏览者用户的身份和权限来执行。通过xss可以比较容易地修改用户数据、窃取用户信息,以及造成其它类型的攻击,例如csrf攻击

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

防御:

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过大而产生的拒绝访问攻击

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

四. 身份认证和会话

黑客在浏览器中停用js,防止客户端校验,从而进行某些操作。

防御:

1、隐藏敏感信息。

2、对敏感信息进行加密。

3、session 定期失效

五.重定向攻击

一种常用的攻击手段是“钓鱼”。钓鱼攻击者,通常会发送给受害者一个合法链接,当链接被点击时,用户被导向一个似是而非的非法网站,从而达到骗取用户信任、窃取用户资料的目的。为防止这种行为,我们必须对所有的重定向操作进行审核,以避免重定向到一个危险的地方.

防御:

将合法的要重定向的url加到白名单中,非白名单上的域名重定向时拒之,第二种解决方案是重定向token,在合法的url上加上token,重定向时进行验证.

六.权限与访问控制

能通过url参数的修改达到访问他人页面,例如,黑客能够使用一下的链接去访问在某商城上自己的订单链接

https://***.***.com/normal/item.action?orderid=51338221644

这个时候如果网站没有相关权限验证,那么他也能通过下面的链接去访问其他人的订单。

https://***.***.com/normal/item.action?orderid=其他id

这样子就会造成商城其他人的隐私的泄露。

防御:

1、添加权限系统,访问的时候可以加上相应的校验。

七.不安全加密存储

防御:

1、加密存储敏感信息

2、不用md5加密

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

八.sql注入

最常见的攻击方式,所谓sql注入,就是通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令,比如先前的很多影视网站泄露vip会员密码大多就是通过web表单递交查询字符暴出的,这类表单特别容易受到sql注入式攻击.

防御:

1、表单过滤,验证表单提交的合法性,对一些特殊字符进行转义处理

2、数据库权限最小化

3、查询语句使用数据库提供的参数化查询接口,不要直接拼接sql

九.传输层未加密

防御:

1、使用安全的https版本

2、敏感信息使用https传输

3、非敏感信息使用http传输

以上就是“常见的web攻击和防御总结”的全部内容,如果什么需要欢迎登陆gdca数安时代官网咨询客服。