Skip to content

Latest commit

 

History

History
43 lines (24 loc) · 1.89 KB

前端安全.md

File metadata and controls

43 lines (24 loc) · 1.89 KB

XSS(跨站脚本攻击)

通过向网站写入js脚本来实现攻击,攻击者在web页面插入恶意html代码,当用户浏览该网页时,嵌入的代码就会执行,从而达到攻击的目的

  • 反射型

反射型XSS只是简单地把用输入的数据"反射"给浏览器,往往需要诱使用户点击一个恶意链接,或者提交一个表单,或者进入一个恶意网站时,注入脚本进入被攻击者的网站

  • 存储型

攻击者将恶意代码提交到目标网站的数据库中,用户打开目标网站,服务端将恶意代码从数据库去除拼接在html中返回给浏览器,浏览器接收到响应后解析执行

常见于带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等

  • DOM型

DOM型XSS和前两种XSS的区别

DOM型XSS取出和执行恶意代码由浏览器完成,属于前端js自身的安全漏洞,而其他两种属于服务端的安全漏洞

如何防御XSS

XSS攻击两大要素

1. 攻击者提交恶意代码
2. 浏览器执行恶意代码
  • 输入检查: 对输入内容中的 <script> 等标签进行转义或者过滤
  • 设置httpOnly: 很多XSS攻击目标都是窃取用户的cookie伪造身份认证,设置此属性可以防止js获取cookie
  • 开启CSP: 开启白名单,可组织白名单意外的资源加载和运行

CSRF(跨站请求伪造)

攻击者盗用客户的身份,以客户的名义发送恶意请求

如何防御CSRF攻击

  • 每次用户提交都需要用户在表单填写一个验证码,这样可以有效防止其他网站恶意攻击
  • 验证token: 浏览器请求服务器,服务器返回一个token,每个请求都同时带上token和cookie才被认为是合法请求
  • Referer: 通过验证请求头的 Referer 来验证来源站点,但请求头很容易伪造
  • 验证SameSite: 设置cookie的 SameSite,可以让cookie不随跨域请求发出