这是我参与「第五届青训营」伴学笔记创作活动的第 11 天,欢迎各位大佬批评指正。
Web 安全 🔐
Web安全问题很常见,也有很多的危害⚠️
- 公司利益受损
- 个人隐私泄漏风险
- 程序猿祭天
- ...
因此Web安全问题不容小觑,下面从攻击者和防御者两个角度来解读一下常见的安全攻防问题。
攻击篇 😈
XSS 攻击
XSS即Cross-Site Scripting,跨站脚本攻击。
主要是利用盲目信任用户提交的内容;可能会在提交一些信息时注入恶意脚本,造成XSS攻击。
特点:
- 很难从
UI上进行感知。 - 窃取用户信息(cookie、token...)
- 绘制
UI弹窗,诱骗用户点击、填写表单... - ...
分类:
- 存储型(Stored XSS):恶意脚本被存在数据库中,访问页面会触发读取数据进而受到攻击,对全部用户可见,危害最大!!!
- 反射型(Reflected XSS):不涉及数据库,从
URL进行攻击。 - 基于DOM型(DOM-based XSS):不需要服务器参与,在浏览器端完成攻击。
- 基于Mutation型(Mutation-based XSS):按照浏览器渲染
DOM特性,进行区别攻击。
CSRF 攻击
CSRF即Cross-Site Request Forgery,跨站伪造请求。
用户在不知情的前提下,利用用户权限(cookie),构造指定HTTP请求,进而窃取/修改用户敏感信息。
SQL-Injection 攻击
-
如果有一个请求携带恶意SQL参数到达服务器端,
Sever读取参数后运行SQL Code,进而执行到恶意代码,可以随意获取数据、修改数据等。 -
SSRF攻击:流量转发导致服务器挂掉。
DOS 攻击
DOS即Denial of Service,通过某种方式构造特定请求,导致服务器资源被显著消耗,无法效应更多的请求,致使请求积压,进而雪崩。
- 正则的贪婪匹配
D DoS攻击
中间人攻击
由于HTTP协议具有
- 明文传输
- 信息篡改不可知
- 对方身份未验证
导致中间人攻击存在。
防御篇 🛠
XSS 防御
- 永远不要相信用户输入的任何内容,最好直接当做字符串处理。
如果必须要根据用户输入动态生成DOM,应该对输入内容过滤扫描,防止一些恶意代码。
- CSP防御:根据设置同源
CSRF 防御
- 利用
orgin和referrer来过滤请求域名。 token防御机制iframe攻击:设置X-Frame-Options为deny/sameorigin,限制当前页面是否能被当作iframe加载。Same-Site Cookie防御机制。
Injection 防御
找到项目中查询的SQL地方,使用prepared statement设置项。
- 最小权原则
- no sudo||root
- 建立白名单机制
- no rm
- 对
URL类型参数进行协议、域名、ip限制- no 访问内网
DoS防御
-
正则的
DoS攻击:- ❌写出贪婪匹配的模式
- 代码扫描 + 正则性能测试
- ❌用户提供的正则
-
D DoS攻击:- 流量治理
- 负载均衡
- API网关
- CDN
- 快速自动扩容
- 非核心服务降级
- 流量治理
中间人防御
- 使用
HTTPS协议,加密传输。 HSTS:主动升级HTTPS请求,但是一定要先有一次HTTPS请求。
安全无小事,一定要保持学习心态!