这是我参与「第四届青训营 」笔记创作活动的第2天
从攻击、防御两个视角讨论在前端开发中实用的安全问题
一、攻击
注入恶意脚本
- 跨站脚本攻击XSS:用户提交内容含有脚本,访问页面读取数据时被攻击;攻击数据库,用户个人信息。
- 反射型XSS:URL中含有脚本字段,从服务端注入恶意脚本。
- 基于DOM的XSS攻击:在浏览器端发起和执行恶习攻击。
- 基于Mutation的XSS攻击:浏览器渲染差异
跨站伪造请求
欺骗用户获取用户权限(cokkie),构造HTTP请求,窃取或修改用户信息
demo
<a href="">抽奖</a><img style="" src="">
get请求之外
SOL注入攻击
请求注入SQL参数,服务器上运行,删改数据,暴露重要文件。
服务拒绝
- 基于正则表达式的DoS:贪婪,多次匹配回溯:响应时间++
- Distributed DoS:短时间大量僵尸设备请求,消耗带宽;SYN洪水工具
传输层:中间人攻击
于浏览器与服务器间窃取信息,修改请求。
- 明文传输
- 信息篡改未检验
- 对方身份不可知
二、防御
XSS
永远不信任用户提交的任何信息(string),勿转换成DOM
- 主流框架默认防御XSS
- 服务端 字符串转义DOMPureify
- 扫描svg文件
- 不允许用户自定义跳转链接
同源策略SOP:协议,域名,端口号
内容安全策略CSP:寻找安全源执行
CSRF防御
- 异常请求来源,限制请求;服务器接收过的页面
- token和用户绑定,过期
- iframe——X-Fream-Options: DENY
- GET!=GET+POST
- SameSite Cookie 限制domain Cookie
Injection
找到查询SQL的地方,使用prepared ststement
beyondSQL:最小权限,建立白名单,过滤操作( -rm )
防御DoS
- × /(ab*)+/
- 禁用正则
- code review
- 流量治理
- 抗量、扩容
传输层
- HTTPS协议
- 数字签名
- SRI
Web Application Security: Exploitation and Countermeasures for Modern Web Applications 1st Edition