这是我参与「第四届青训营」笔记创作活动的的第1天
Web安全一窥
在前端的网页开发中,安全问题十分常见。这些问题如果不得到重视与解决,将会危害:
- 用户(使得用户的隐私遭到泄露)
- 公司(使得公司的数据遭到破坏)
- 程序(使得程序员生涯提早结束)
Web安全之攻击篇
Cross-Site Script(XSS)
跨站脚本攻击是最常见的一种攻击方式。攻击者会利用某种方式将恶意脚本注入网页。当用户访问页面时,就会导致恶意脚本执行,从而对用户造成损害。
- XSS原理: 开发者盲目信任用户提交内容 + 直接将用户提交字符串转换为DOM。
- XSS特点: 通常难以从UI上感知;会窃取用户信息;绘制UI,诱骗用户点击/填写表单。
Stored XSS(存储型)
特点:
- 恶意脚本被存在数据库中
- 访问页面 -> 读数据 === 被攻击
- 危害最大,对全部用户可见
Reflected XSS
特点:
- 不涉及数据库
- 从URL上攻击
Demo:
host/path/?param=<script>alert('123')</script>
public async render(ctx) {
const { param } = ctx.query;
ctx.status = 200;
ctx.body = `<div>${param}</div>`;
}
基于DOM的XSS攻击方式(DOM-based XSS)
基于mutation的XSS攻击(mutation-based XSS)
跨站伪造请求(Cross-site request forgery CSRF)
注入(Injection)
最常见的有SQL注入。
拒绝服务 Denial of Service(DOS)
这种攻击是通过某种方式(构造特定请求),导致服务器资源被显著消耗, 来不及响应更多请求,导致请求挤压,进而导致雪崩效应,最终导致服务下线。
Distributed DoS(DDoS)
短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成 全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。
攻击特点:
- 直接访问IP
- 任意API
- 消耗大量带宽(耗尽)
Web安全之防御篇
Cross-site Scripting(XSS)--> 跨站脚本攻击
防御策略:
- 永远不要相信用户提交的数据
- 现在前后端的主流框架已默认支持防御xss攻击
CSRF的防御
总结
Web安全在开发中是至关重要的。开发过程中要注意代码的安全性,这样才是对自己,对用户,对公司负责。