这是我参与「第五届青训营 」伴学笔记创作活动的第 17 天
本课课程概要
从防御方的角度观察web开发需要注意的安全问题
课程内容要点
XSS
永远不要相信用户提交的输入!!!!
更不要把用户提交的输入直接转化为DOM
现实例子——抖音评论区无法输入
<>
XSS的防御工具可采用一些主流的框架(如google-closure-library),或者在前台后端(NODE)层面装载DOMPurify
如果必须动态生成DOM,需要强调的是:
- string->DOM: new DOMParser(),一定要对DOM进行转意
- 上传svg:对svg文件进行扫描。svg里面可以含脚本
- 自定义跳转:慎用,因为可以插入js代码
- 自定义样式:这样暴露了月收入
CSP
同源策略:协议+域名+端口号三者完全一样
以上三者都不同源
不同源-》跨域,而CSP可以自定义设置哪些域名是安全的,来自安全源的域名执行,不安全则报错。也可以拒绝js
CSRF的防御
- 方式一
异常请求不在域名白名单内,将会被拒绝。
- 方式二
利用token判定用户是否来自原始页面
- 终极
尽量不对单独的案例设置单独的防御,二是在中间层(如node)设置专门的防御模块
iframe
来自iframe/button的请求是同源请求
Inject
使用prepared statement,其原理是把数据库操作进行编译,那么攻击者就不能直接用数据库SQL语句了。
还有可以:
DOS
- 正则的DOS: 避免贪婪匹配,利用代码扫描工具,拒绝用户正则
- DDOS:过滤(负载均衡、异常失败)+ 抗量(CDN,快速自动扩容,非核心服务降级)