Web 开发安全| 青训营笔记

67 阅读2分钟

攻击篇

Cross-Site Scripting(XSS)特点:通常难以从UI上感知(暗地执行脚本),窃取用户信息(cookie/token),绘制UI(例如弹窗),诱骗用户点击/填写表单

  1. Stored Xss:恶意脚本被存在数据库中,访问页面→读数据实现对用户攻击,危害最大,对全部用户可见
  2. eflected Xss:不涉及数据库,从URL上攻击
  3. 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):

  1. ReDos:基于正则表达式的Dos
  2. DDos:短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。

中间人攻击:基于传输层,利用了明文传输和信息篡改不可知对方身份未验证

防御篇

XSS 的防御:永远不信任用户的提交内容,不要将用户提交内容直接转换成DOM,若必须动态生成DOM注意:string转DOM时对string进行转译,对用户上传的svg文件进行扫描,留意用户能自定义样式的部分

防御 CSRF 的正确姿势:限制请求来源,get与post区分开,SameSite,CORS

防御 DoS:

  1. ReDos:代码扫描+正则性能测试,避免用户提供的使用正则,
  2. DDos:过滤:负载均衡,API网关 抗量:CDN,快速自动扩容,非核心服务降级

防御 Injection:找到项目中查询SQL的地方使用prepared statement,最小权限原则不用sudo 或 root,建立允许名单+过滤,对URL类型参数进行协议、域名、ip等进行限制,不访问内网

防御中间人:用HTTPS