这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天
Web开发安全指南
一、攻击者视角
1、XSS(Cross-Site Scripting):跨站脚本攻击
- 定义:跨站脚本攻击通常是指通过存在安全漏洞的Web网站运行非法的HTML标签或JavaScript进行的一种攻击
- 原理:攻击者王Web页面中插入恶意且可执行的网页脚本代码,当用户浏览时,嵌入其中的恶意代码就会被执行,从而达到攻击者盗取用户信息或进一步侵犯安全隐私的目的
-
特点:
- 通常很难从UI上感知(暗地执行脚本)
- 窃取用户信息(cookie/token)
- 绘制UI(例如弹窗),诱骗用户输入信息
2、CSRF(Cross-site request forgery):跨站伪造请求
-
特点:
- 在用户不知情的情况下
- 利用用户权限(cookie)
- 构造指定HTTP请求,窃取或修改用户敏感信息
二、防御者视角
1、防御XSS攻击
- 永远不信任用户的提交内容
- 不要将用户提交的内容直接转换为DOM
- 尽量不要从 URL,document.referrer,document.forms 等这种 DOM API 中获取数据直接渲染。
2、CSP(Content Security Policy):内容安全策略
-
CSP能够允许我们开发者自定:
- 哪些源(域名)被认为是安全的
- 来自安全源的脚本可以执行,否则直接抛错
- 禁止eval+inline script
3、防御CSRF攻击
-
措施:
- Get 请求不对数据进行修改
- 不让第三方网站访问到用户 Cookie
- 阻止第三方网站请求接口
- 请求时附带验证信息,比如验证码或者 Token
4、防止传输层被攻击
-
使用Https协议,其中Https协议的特点有:
- 可靠性:加密
- 完整性:MAC验证
- 不可抵赖性:数字签名