Web开发的安全之旅 | 青训营笔记

69 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的第1天

一.攻击篇

1.跨站脚本攻击Cross-Site Scripting(XSS)

盲目信任用户提交内容,将字符串直接转换成dom

document.write
element.innerHTML = String
SSR(user_data)

分类:

  1. Stored XSS:恶意脚本储存在数据库中
  2. Reflected XSS:通过URL攻击,在服务端注入
  3. DOM-based XSS:通过URL攻击,全在浏览器中执行
  4. Mutation-baswd XSS:利用浏览器渲染特性进行攻击

2.跨站伪造请求Cross-site request forgery(CSRF)

在用户不知情下,利用用户权限,构造http请求,窃取或修改用户信息

3.服务器端伪造请求Server-side request forgery(SSRF)

4.SQL注入

注入SQL语句,在服务器端执行获取、删除、增添操作

5.Denial of Service(DoS)

通过某种方式,导致服务器资源呗显著消耗,来不及响应更多请求,导致请求积压

6.Distributed Dos(DDoS)

短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致1请求堆积,进而雪崩效应,无法响应新请求

7.中间人攻击

可以窃取信息,修改请求、返回结果

二.防御篇

1.XSS

  1. 字符串转义
  2. 扫描svg文件

2.内容安全策略Content Security Policy(CSP)

  1. 定义安全的源(域名)
  2. 来自安全源的脚本可以执行,否则报错

浏览器meta:

<meta http-equiv="Content-Security-Policy" content="script-src self">

3.CSRF

  1. 通过校验请求的Origin + Referrer限制请求来源
  2. token与具体用户进行绑定,设置过期时间
  3. 服务器设置X-Frame-Options: DENY/SAMEORIGN规避iframe攻击
  4. 明确划分get和post请求

4.Injection

找到项目中查询SQL的地方,使用prepared statement

5.Dos

  1. 避免贪婪匹配
  2. 代码扫描
  3. 拒绝使用用户提供正则表达式

6.DDos

  1. 流量治理
  2. 快速自动扩容
  3. 非核心服务降级

7.传输层

使用HTTPS协议