对Web应用的攻击模式可分为主动攻击和被动攻击
主动攻击是指攻击者通过直接访问Web应用,把攻击代码传入的攻击模式
具有代表性的是SQL注入攻击和OS命令注入攻击
被动攻击是指利用圈套策略执行攻击代码的攻击模式
具有代表性的是跨站脚本攻击和跨站请求伪造。
XSS的实质其实是HTML与Javascript代码的注入
从攻击方式可分为持久型和非持久型
1、持久型
因为恶意代码存在于服务器上,所以任何访问该页面的用户都会受到攻击,是最危险的一种跨站脚本
2、非持久型
持久型与非持久型最大的区别在于恶意代码存放的位置不同
前者的恶意代码存在于服务器中,而后者的恶意代码存在于URL或者页面的DOM结构中(直接在URL后面拼接script标签,或者利用一些DOM属性获取用户的输入/信息)
X-XSS-Protection属于HTTP响应报文的首部字段
当指定字段值为0时,禁止XSS过滤
当指定字段值为1时,启用XSS过滤
Set-cookie字段属于HTTP响应报文的首部字段
当为此字段设置了 HttpOnly之后,无法使用Javascript的document.cookie来劫持Cookie
需要对用户的输入进行处理,只允许用户输入合法值
对HTML的一些特殊字符进行转义,例如:将尖括号转义为 < 和>
CSRF是指 攻击者利用 已通过认证的用户身份 进行恶意操作
攻击步骤如下:
1、用户注册/登录至网站A
2、服务器验证通过后,在用户(浏览器)本地生成Cookie
3、用户在未退出A的前提下,打开/访问危险网站B
4、B在携带用户Cookie的情况下,对网站A发送恶意的GET或POST请求
Referer字段是HTTP请求报文的一个首部字段,用于记录该HTTP请求的来源地址
通常来说,Referer字段应和请求的地址位于同一域名下
而如果是CSRF攻击传来的请求,Referer字段会是包含恶意网址的地址
这种办法简单易行,工作量低,但是安全性不够高
因为无法保证浏览器没有安全漏洞影响到此字段,也无法避免攻击者攻击浏览器、篡改Referer字段
在发出访问敏感数据的请求时,要求用户浏览器提供 不保存在Cookie中、且攻击者无法伪造的数据 作为校验
这个数据通常是一个伪随机数
验证码强制用户与应用进行交互,才能完成最终请求
而CSRF无法获取验证码,也就无法通过服务器的验证
原文:https://www.cnblogs.com/baebae996/p/13844642.html