XSS(Cross-Site Scripting),跨站脚本攻击是指恶意攻击者往Web页面里插入恶意script代码,当用户浏览该页之时,嵌入其中Web里面的script代码会被执行,从而达到恶意攻击用户的目的。
(1)反射性:URL参数直接注入
<非持久化> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。
(2)存储型:存储到数据库后读取注入
<持久化> 代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。
(1)转义字符:
(2)为cookie设置httpOnly属性
这是防范XSS攻击的最有效方式,如果cookie中设置了HttpOnly属性,那么cookie只在HTTP传输中有效,通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容。
CSRF(Cross Site Request Forgery),即跨站请求伪造,是一种常见的WEB攻击,它利用用户已登录的身份,在用户毫不知情的情况下,以用户的名义完成非法操作。
利用用户登录态,盗取用户身份进行操作
(1)后端检验refer
Referer是HTTP请求请求头的一个字段,携带了发送请求页面的URL,后端通过检验Referer可以进行CSRF防御。但是https请求请求头中没有Referer,且Referer也是可以伪造的。
(2)验证码:人机识别
(3)cookie进行hash:攻击者在访问站点A时,虽然浏览器可以在请求中携带cookie,但是站点A不仅仅通过cookie判断用户身份,同时通过用户发送的内容中的伪随机数来判断请求是否是用户发送的。攻击者在请求时,不能在提交的内容中产生伪随机数
(2)验证码
(3)cookie值