这是我参与「第四届青训营」笔记创作活动的的第7天
Web 开发的安全之旅:从攻击、防御两个视角,简要介绍前端范畴内常见的安全问题,包括 XSS、CSRF、SQL 注入、DOS 等。
hacker--攻击
跨站脚本攻击(XSS)
xss主要利用了开发者盲目信任用户提交的信息,前端工程师直接把用户提交的字符串转化成DOM树
按性质划分
- 存储型:恶意脚本被存在数据库中,用户访问页面就会被攻击,危害极大,对全部用户可见。
- 反射型:不涉及数据库,从URL上攻击。恶意脚本在服务端注入
跨站伪造请求(CSRF)
在用户不知情的情况下,利用用户权限(cookie),构造指定HTTP请求,窃取或者修改用户敏感信息。
SQL-Injection
过程:SQL参数在请求上代入(恶意注入),然后请求到达服务器端,服务器读取这段SQL语句,然后运行代码, 代码被执行后,攻击者能够获取其他数据,或者修改删除数据。
服务端伪造请求(SSRF)
与Injection原理相同。
DoS
通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而雪崩效应。
正则表达式——贪婪模式
- “?”:满足一个
- “no?”:满足尽量多
基于正则表达式的DoS
回溯
DDoS
短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新情求。 攻击特点:
- 直接访问IP
- 任意API
- 消耗大量宽带
开发者--防御
XSS
- 永远不信任用户的提交内容
- 不要将用户提交内容直接转换成DOM
前端
- 主流框架默认防御XSS
- goole-closure-library
服务端(Node)
- DOMPurify
Content Security Policy(CSP)
- 哪些域名是安全的
- 来自安全源的脚本可以直接执行,否则直接抛错
- 对eval+inline script说×