常见Web攻击手段及其防范

常见Web攻击手段及其防范


【1】XSS跨站脚本

Cross Site Scripting

  • 攻击者在网页中嵌入恶意脚本程序,当用户打开网页,脚本程序就在客户端的浏览器上执行,以盗取客户端cookie、用户名密码、下载执行木马程序,甚至是获取客户端admin权限……

原理:

  1. 假设网页上有个表单nick,用于向服务器提供用户的昵称信息,正常用户会这么输入:<input type="text" name="nick" value="DragonBaby308" />
  2. 但是如果用户输入的不是一个正常姓名,而是"/><script>alert("哈哈")</script><!--时,页面内容就变成了:
1
2
<input type="text" name="nick" value=""/>
<script>alert("哈哈")</script><!--" />
  1. 这时候这个表单就变成了一个恶意脚本

防范:HTML转义

防范XSS的措施是:对用户输入的特殊字符进行HTML转义编码

1
2
3
4
<           转义为:      &lt;
> 转义为: &gt;
' 转义为: &amp;
" 转义为: &quot;

如今很多框架本身默认就提供HTML代码转义功能。


【2】CSRF跨站请求伪造

Cross Site Request Forgery

  • 盗用者网站利用第三方网站受信任用户的身份,向第三方网站发送恶意请求。

原理:

  1. 受信任用户浏览并访问网站A,cookie保存在本地浏览器
  2. 用户在未登出A的情况下,访问了恶意网站B
  3. B要求访问网站A,浏览器带着A的cookie访问A,这样B就伪造了用户身份访问了网站A
  4. B可以利用用户身份发邮件、发短信、转账、改密码

防范:HttpOnly/token/Referer

  1. 将cookie设置为HttpOnly,这样通过应用程序就无法读取到cookie信息,避免了攻击者伪造cookie
  2. 在请求中加入攻击者无法伪造的信息,比如在HTTP请求中以参数的形式加入一个随机产生的token,并在服务端进行token校验
  3. 通过Referer识别:检查HTTP头中的Referer字段,如果指向的是第三方网站,就认为是CSRF攻击

【3】SQL注入

  1. 正常用户输入namepasswd,此时SQL语句是:select * from user where name='name' and password='passwd';
  2. 但是如果用户输入密码' or '1',此时SQL语句变成了:select * from user where name='name' and password = '' or '1';
  3. or '1'这个条件是恒成立的,所以该语句相当于:select * from user where name = 'name';

防范:PreparedStatement/ORM/加盐

  1. 使用预编译语句PreparedStatement将特殊字符转义
  2. 使用ORM框架,比如MyBatis
  3. 密码不用明文存储,而是Hash加盐存储

【4】DDoS分布式拒绝服务攻击

Distributed Denial of Service

攻击者借助公共网络,将数量庞大的计算机设备联合起来攻击平台,对一个或多个目标发动攻击,从而达到瘫痪目标主机的目的。

1. SYN Flood

利用了TCP三次握手的原理,攻击者伪造巨量的IP地址给服务器发送SYN报文,由于伪造的IP不存在,服务器就不能收到任何响应,所以它会不断重试,占用大量系统资源,导致无法处理正常用户的握手请求。

2. DNS Query Flood

攻击者向DNS服务器发送大量域名解析请求,造成DNS服务器无法处理正常域名解析。

-------------本文结束感谢您的阅读-------------

本文标题:常见Web攻击手段及其防范

文章作者:DragonBaby308

发布时间:2019年10月13日 - 00:16

最后更新:2019年11月19日 - 00:12

原始链接:http://www.dragonbaby308.com/WebAttack/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

急事可以使用右下角的DaoVoice,我绑定了微信会立即回复,否则还是推荐Valine留言喔( ఠൠఠ )ノ
0%