这套题还不错,感兴趣的猿可以试一试:前端开发工程师
XSS
攻击和 CSRF
攻击
1、XSS
攻击
1. 概念
XSS(Cross Site Scripting)
:跨域脚本攻击。
2. 原理
不需要你做任何的登录认证,它会通过合法的操作(比如在 url
中输入、在评论框中输入),向你的页面注入脚本(可能是 js
、hmtl
代码块等)。
3. 防范
- 编码;对于用户输入进行编码。
- 过滤;移除用户输入和事件相关的属性。(过滤
script
、style
、iframe
等节点) - 校正;使用
DOM Parse
转换,校正不配对的DOM
标签。 HttpOnly
。
4. 分类
- 反射型(非持久):点击链接,执行脚本
- 存储型(持久):恶意输入保存数据库,其他用户访问,执行脚本
- 基于
DOM
:恶意修改DOM
结构,基于客户端
2、CSRF
攻击
1. 概念
SRF(Cross-site request forgery)
:跨站请求伪造。
2. 原理
- 登录受信任网站
A
,并在本地生成Cookie
。(如果用户没有登录网站A
,那么网站B
在诱导的时候,请求网站A
的api
接口时,会提示你登录)。 - 在不登出
A
的情况下,访问危险网站B
(其实是利用了网站A
的漏洞)。
3. 防范
token
验证;- 隐藏令牌;把
token
隐藏在http
请求的head
中。 referer
验证;验证页面来源。
3、两者区别
CSRF
:需要用户先登录网站A
,获取cookie
。XSS
:不需要登录。CSRF
:是利用网站A
本身的漏洞,去请求网站A
的api
。XSS
:是向网站A
注入JS
代码,然后执行JS
里的代码,篡改网站A
的内容。