Web开发安全之旅 | 青训营笔记

42 阅读2分钟

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

1. Web 开发的安全之旅

Web安全问题一窥

安全问题很常见,会危害

  • 用户
  • 公司
  • 程序员

两个角度看Web安全

  • 假如你是一个hacker——攻击
  • 假如你是一个开发者——防御

课程内容要点

XSS

永远不要相信用户提交的输入!!!!

更不要把用户提交的输入直接转化为DOM

现实例子——抖音评论区无法输入<>

XSS的防御工具可采用一些主流的框架(如google-closure-library),或者在前台后端(NODE)层面装载DOMPurify

如果必须动态生成DOM,需要强调的是:

  • string->DOM: new DOMParser(),一定要对DOM进行转意
  • 上传svg:对svg文件进行扫描。svg里面可以含脚本
  • 自定义跳转:慎用,因为可以插入js代码
  • 自定义样式:这样暴露了月收入

image.png

CSP

同源策略:协议+域名+端口号三者完全一样

image.png 以上三者都不同源

不同源-》跨域,而CSP可以自定义设置哪些域名是安全的,来自安全源的域名执行,不安全则报错。也可以拒绝js

image.png

CSRF的防御

  1. 方式一

image.png

异常请求不在域名白名单内,将会被拒绝。

  1. 方式二

image.png

利用token判定用户是否来自原始页面

  1. 终极

尽量不对单独的案例设置单独的防御,二是在中间层(如node)设置专门的防御模块

iframe

image.png 来自iframe/button的请求是同源请求

Inject

使用prepared statement,其原理是把数据库操作进行编译,那么攻击者就不能直接用数据库SQL语句了。

还有可以:

image.png

DOS

  1. 正则的DOS: 避免贪婪匹配,利用代码扫描工具,拒绝用户正则

  2. DDOS:过滤(负载均衡、异常失败)+ 抗量(CDN,快速自动扩容,非核心服务降级)