常见的Web攻击有哪些?

时间:2021-3-19

一.跨站脚本攻击(XSS)

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

防御:

1、对于敏感的cookie信息,使用HttpOnly,使document对象中找不到cookie。

2、对于用户输入的信息要进行转义。

二. 跨站请求伪造攻击(CSRF)

跨站请求伪造(CSRF,Cross-site request forgery)是另一种常见的攻击。攻击者通过各种方法伪造一个请求,模仿用户提交表单的行为,从而达到修改用户的数据,或者执行特定任务的目的。为了假冒用户的身份,CSRF攻击常常和XSS攻击配合起来做,但也可以通过其它手段,例如诱使用户点击一个包含攻击的链接

防御:

1.采用POST请求,增加攻击的难度.用户点击一个链接就可以发起GET类型的请求。而POST请求相对比较难,攻击者往往需要借助java才能实现

2.对请求进行认证,确保该请求确实是用户本人填写表单并提交的,而不是第三者伪造的.具体可以在会话中增加token,确保看到信息和提交信息的是同一个人

三.Http Heads攻击

凡是用浏览器查看任何WEB网站,无论你的WEB网站采用何种技术和框架,都用到了HTTP协议.HTTP协议在Response header和content之间,有一个空行,即两组CRLF(0x0D 0A)字符。这个空行标志着headers的结束和content的开始。“聪明”的攻击者可以利用这一点。只要攻击者有办法将任意字符“注入”到headers中,这种攻击就可以发生

防御:

过滤所有的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 定期失效

五.重定向攻击

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

防御:

1.将合法的要重定向的url加到白名单中,非白名单上的域名重定向时拒之,

2.重定向token,在合法的url上加上token,重定向时进行验证.

六.权限与访问控制

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

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

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

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

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

防御:

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

七.不安全加密存储

对重要信息不进行加密处理或加密强度不够,或者没有安全的存储加密信息,都会导致攻击者获得重要信息。此风险还涉及Web应用以外的安全管理。

解决方案

目前广泛被使用的加密算法AES、RSA public key cryptography和SHA-256皆属于较安全的加密演算法;因此,在系统设计阶段时,可考虑采用这些算法,以提升资料安全保护等级。

可以采取如下手段防止存在“不安全的加密存储“漏洞:

对所有重要信息进行加密;

使用足够强度的加密算法,比如AES、RSA;

存储密码时,用SHA-256等健壮哈希算法进行处理;

产生的密钥不能与加密信息一起存放;

严格控制对加密存储的访问等。

如果使用MD5算法,应采用两遍MD5的方式,对原始数据进行保护,如下示例:

第一遍MD5: strTmp = md5(strSuorce);

中间结果字串变形:strTmp = strTmp+”XXXX”;

第二遍MD5: strResult = md5(strTmp);

八.SQL注入

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

防御:

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

2、数据库权限最小化

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

九.传输层未加密

防御:部署SSL数字证书,保障数据传输安全

部署磐云网站安全防护系统,防御web攻击,极大提高网站安全性。