Web安全 | 青训营笔记

44 阅读3分钟

这是我参与「第五届青训营」伴学笔记创作活动的第10天。

知识点笔记

一、攻击

XSS的特点:
1.通常难以从UI上感知
2.窃取用户信息(cookie/token)
3.绘制UI(如弹窗),诱骗用户点击/填写表单

Stored XSS
1.恶意脚本被存在数据库中
2.访问页面->读数据 =被攻击
3.危害最大,对全部用户可见

Reflected XSS
不涉及数据库,从URL上攻击

DOM-based XSS
不需要服务器的参与,恶意攻击端发起+执行,全在浏览器完成
区别:Reflected 恶意脚本从服务器注入浏览器

Mutation-based XSS
利用浏览器渲染DOM的特性,不同浏览器,会有区别(按浏览器进行攻击)

Cross-site request forgery(CSRF)
在用户不知情的前提下,利用用户权限(cookie),构造指定HTTP请求,窃取或修改用户敏感信息

SQL injection
请求:恶意注入SQL参数;运行SQL code;获取其他数据、修改数据、删除数据

其他Injection
CLI
OS command
Server-Side Request Forgery(SSRF),服务端伪造请求,严格来说SSRF不是injection,但是原理相似

Denial of Service(DoS)
通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,雪崩效应

ReDoS:基于正则表达式的DoS
回溯

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

中间人攻击
明文传输,信息篡改不可知,对方身份未验证

二、防御

XSS
不信任用户的提交内容,不要将用户提交内容直接转换成DOM

现成工具
前端:主流框架默认防御XSS,google-closure-library
服务器(Node):DOMPurify

Content Security Policy(CSP)
源/域名被认为是安全的,来自安全源的脚本可以执行,拒绝eval + inline script

CSRF--token
验证token
用户绑定,过期时间

CSRF--iframe攻击
是同源请求,X-Frame-Options:DENY/SAMEORIGIN

CSRF--anti-pattern
不要把get和post写在一起,分开写更新和获取接口

SameSite Cookie
限制Cookie domain和页面域名

  • 区别CORS

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

除了SQL的Injection
1.最小权限原则 sudo root x
2.建立允许名单+过滤 rm x
3.对URL类型参数进行协议、域名、ip等限制

Regex DoS
code review,代码扫描+正则性能测试,不使用用户提供的正则

Logical DoS
不是非黑即白,有些情况只有在请求量大到一定之后,才会体现
分析代码中的性能瓶颈:同步调用,串行逻辑,CPU密集型操作
限流

DDoS
流量治理:负载均衡、API网关、CDN 过滤
快速自动扩容
非核心服务降级

防御中间人 HTTPS内置了TLS

HTTPS特性:
可靠性:加密 非对称加密
完整性:MAC验证 验证hash
不可抵赖性:数字签名 验证证书

HTTP Strict-Transport-Security(HSTS)
将http主动升级到HTTPS,但先要有一次https访问

Subresource Integrity(SRI)
静态资源是否被篡改 对比hash

feature policy/permission policy