xss 、csrf攻击

一、CSRF(Cross-site request forgery)

csrf:跨站请求伪造

1.CSRF的攻击原理
xss 、csrf攻击
CSRF的攻击:
(1)用户已登录信任网站A,并生成本地cookie
(2)用户没有退出A,访问危险网站B
提示:cookie保证用户处于登录态,但是网站B拿不到cookie

2.防御:
(1)尽量使用post请求
(2)加入验证码:在http头部中自定义属性,即将token隐藏在http的header中
(3)验证 HTTP Referer字段:该字段记录了http请求来源地址
(4)Anti CSRF Token:在http请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截来验证此token;如果请求中没有token或token内容不符,则认为是CSRF攻击而拒绝该请求

XSS(Cross Site Scripting)

xss:跨域脚本攻击

1.xss的攻击原理
不需要你做任何的登录认证,它会通过合法的操作(比如在url中输入、在评论框中输入),向你的页面注入脚本(可能是js、hmtl代码块等)。

2.xss攻击方式

  1. Stored XSS(基于存储的 XSS攻击)
    指xss脚本保存至服务器端(数据库、内存、文件系统)并且可以被普通用户完整的从服务器端获取并执行
  2. Reflected XSS(基于反射的 XSS攻击)
    指xss代码在请求的url中,而后提交至服务器,服务器解析后,xss代码随响应内容一起传给客户端进行解析执行(直接反射至页面)
  3. DOM-based or local XSS(基于DOM或本地的 XSS 攻击)
    DOM型的xss是一种特殊类型的反射型xss,基于dom文档对象模型的漏洞。可以通过dom动态修改页面内容,从客户端获取dom中的数据并在本地执行;可以利用js脚本实现xss

3.xss防御
「1」编码:对用户输入的数据进行HTML Entity编码。
「2」过滤:移除用户输入的和事件相关的属性,移除用户输入的Style节点、Script节点、Iframe节点
「3」使用 HttpOnly Cookie

简书