简述Web的攻击技术

对Web应用的攻击模式可分为主动攻击和被动攻击

一、主动攻击

主动攻击是指攻击者通过直接访问Web应用,把攻击代码传入的攻击模式
具有代表性的是SQL注入攻击和OS命令注入攻击

二、被动攻击

被动攻击是指利用圈套策略执行攻击代码的攻击模式
具有代表性的是跨站脚本攻击和跨站请求伪造。


三、跨站脚本攻击(XSS)

XSS的实质其实是HTML与Javascript代码的注入
从攻击方式可分为持久型和非持久型
1、持久型

  • 攻击者将恶意代码提交到目标服务器上
  • 客户端访问目标网站,服务器返回含有恶意脚本的页面
  • 客户端浏览器收到后解析页面,执行恶意脚本

因为恶意代码存在于服务器上,所以任何访问该页面的用户都会受到攻击,是最危险的一种跨站脚本

2、非持久型

  • 攻击者构造出包含恶意代码的特殊URL
  • 用户被诱导打开/点击URL
  • 恶意脚本被执行

持久型与非持久型最大的区别在于恶意代码存放的位置不同
前者的恶意代码存在于服务器中,而后者的恶意代码存在于URL或者页面的DOM结构中(直接在URL后面拼接script标签,或者利用一些DOM属性获取用户的输入/信息)

四、XSS的危害

  • 窃取用户Cookie
  • 劫持用户会话,从而执行进一步操作(发送电子邮件、非法转账等)
  • 强制弹出广告页面
  • ......

五、XSS的防御方法

1、X-XSS-Protection

X-XSS-Protection属于HTTP响应报文的首部字段
当指定字段值为0时,禁止XSS过滤
当指定字段值为1时,启用XSS过滤

2、HttpOnly

Set-cookie字段属于HTTP响应报文的首部字段
当为此字段设置了 HttpOnly之后,无法使用Javascript的document.cookie来劫持Cookie

3、过滤

需要对用户的输入进行处理,只允许用户输入合法值

4、转义

对HTML的一些特殊字符进行转义,例如:将尖括号转义为 &lt 和&gt

六、跨站请求伪造(CSRF)

CSRF是指 攻击者利用 已通过认证的用户身份 进行恶意操作
攻击步骤如下:
1、用户注册/登录至网站A
2、服务器验证通过后,在用户(浏览器)本地生成Cookie
3、用户在未退出A的前提下,打开/访问危险网站B
4、B在携带用户Cookie的情况下,对网站A发送恶意的GET或POST请求

七、CSRF的防御方法

1、验证Referer字段

Referer字段是HTTP请求报文的一个首部字段,用于记录该HTTP请求的来源地址
通常来说,Referer字段应和请求的地址位于同一域名下
而如果是CSRF攻击传来的请求,Referer字段会是包含恶意网址的地址
这种办法简单易行,工作量低,但是安全性不够高
因为无法保证浏览器没有安全漏洞影响到此字段,也无法避免攻击者攻击浏览器、篡改Referer字段

2、添加校验token

在发出访问敏感数据的请求时,要求用户浏览器提供 不保存在Cookie中、且攻击者无法伪造的数据 作为校验
这个数据通常是一个伪随机数

3、验证码

验证码强制用户与应用进行交互,才能完成最终请求
而CSRF无法获取验证码,也就无法通过服务器的验证

简述Web的攻击技术

上一篇:node.js 好用的提示工具01


下一篇:一篇文章教会你使用HTML5 SVG 标签