machao07 / interview-questions

前端技术栈相关面试知识点( Vue、React、Typescript、JavaScript...),喜欢请点start

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

XSS 和 CRSF 攻击

machao07 opened this issue · comments

1、XSS(Cross Site Scripting)

跨站脚本, 是发生在目标用户的浏览器层面上的,当渲染 DOM 树的过程成发生了不在预期内执行的 JS 代码时,就发生了 XSS 攻击。

  • 大多数 XSS 攻击的主要方式是嵌入一段远程或者第三方域上的 JS 代码。
  • 实际上是在目标网站的作用域下执行了这段 JS 代码。

2、CSRF(Cross Site Request Forgery)

跨站请求伪造,字面理解意思就是在别的站点伪造了一个请求。

在受害者访问一个网站时,其 Cookie 还没有过期的情 况下,攻击者伪造一个链接地址发送受害者并欺骗让其点击,从而形成 CSRF 攻击。

3、XSS 防御的总体思路

对输入(和 URL 参数)进行过滤,对输出进行编码。

  • 对提交的所有内容进行过滤,对 url 中的参数进行过滤,过滤掉会导致脚本执行的相关内容;
  • 对动态输出到页面的内容进行 html 编码,使脚本无法在浏览器中执行。虽然对输入过滤可以被绕过,但是也还是会拦截很大一部分的 XSS 攻击。

4、防御 CSRF 攻击主要有三种策略

  • 验证 HTTP Referer 字段;
  • 在请求地址中添加 token 并 验证;
  • 在 HTTP 头中自定义属性并验证