Web开发的常用攻击和防御方式
一、XSS
主要利用:1.盲目相信用户提交的内容 2.直接把用户的字符串转化成DOM
分类:
1.存储型XSS,恶意脚本存在数据库中,所有访问页面的用户都会被攻击
2.反射型XSS,脚本写在URL中,服务端注入
3.基于DOM的XSS攻击,服务器不参与,浏览器注入
4.基于mutation的XSS,利用浏览器渲染DOM的特性,不同浏览器攻击方式也不同
防御:对string进行转义,扫描svg,自定义跳转链接时要过滤,CSP(限制同源)
二、CSRF
主要利用:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
防御:限制请求来源,校验Origin和Referrer;用户绑定一个有过期时间的token;非同源禁用iframe;GET和POST分开写;samesite cookie,其他页面发出的请求不能带上cookie;对于node,专门构造中间件防御CSRF。
三、注入
分类:
1.SQL注入
2.CLI注入
防御:最小限权,对高位命令建立允许名单,对URL类型参数进行限制
四、Dos
主要利用:通过某种方式,导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而雪崩效应
防御:拒绝使用用户提供的正则,负载均衡,快速扩容,降级非核心服务,使用HTTPS
分类:
1.基于正则表达式的DoS(贪婪模式)
2.DDoS,短时间内让大量僵尸设备请求服务器,TCP三次握手不能完成,服务器连接不能释放
五、传输层中间人攻击
主要利用:明文传输,信息篡改不可知,缺少身份验证
SRI:通过对比Hash,判断资源是否被篡改