攻击篇
Cross-Site Scripting(XSS)特点:通常难以从UI上感知(暗地执行脚本),窃取用户信息(cookie/token),绘制UI(例如弹窗),诱骗用户点击/填写表单
- Stored Xss:恶意脚本被存在数据库中,访问页面→读数据实现对用户攻击,危害最大,对全部用户可见
- eflected Xss:不涉及数据库,从URL上攻击
- Mutation-based xsS:利用了浏览器渲染DOM的特性,按浏览器进行攻击
Cross-site request forgery(CSRF):在用户不知情的前提下利用用户权限(cookie),构造指定HTTP请求,窃取或修改用户敏感信息
Injection:Injection不止于sQL,还有-CLI,os command,Server-Side Request Forgery(SSRF)服务端伪造请求严格而言,SSRF不是injection,但是原理类似 Denial of Service(DoS):
- ReDos:基于正则表达式的Dos
- DDos:短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。
中间人攻击:基于传输层,利用了明文传输和信息篡改不可知对方身份未验证
防御篇
XSS 的防御:永远不信任用户的提交内容,不要将用户提交内容直接转换成DOM,若必须动态生成DOM注意:string转DOM时对string进行转译,对用户上传的svg文件进行扫描,留意用户能自定义样式的部分
防御 CSRF 的正确姿势:限制请求来源,get与post区分开,SameSite,CORS
防御 DoS:
- ReDos:代码扫描+正则性能测试,避免用户提供的使用正则,
- DDos:过滤:负载均衡,API网关 抗量:CDN,快速自动扩容,非核心服务降级
防御 Injection:找到项目中查询SQL的地方使用prepared statement,最小权限原则不用sudo 或 root,建立允许名单+过滤,对URL类型参数进行协议、域名、ip等进行限制,不访问内网
防御中间人:用HTTPS