Web安全防御手段 | 青训营笔记

60 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第3天

针对XSS攻击

两个原则

  • 永远不信任用户提交的内容

  • 不要将用户提交内容直接转换成DOM

现成工具:

前端

  • 主流框架默认防御(Vue、React)

  • google-closure-library

服务端

  • DOMPurify

服务要求需要动态生成DOM时的注意事项

String->DOM

对String进行转义

上传svg图片文件

对文件进行扫描

自定义跳转链接

尽量不做自定义跳转链接,如果确实需求需要,则做好过滤

CSP(内容安全策略)

同源是值协议、域名、端口都要相同

CSP允许开发者自行定义哪些源被认为是安全的,来自安全源的脚本可以执行,否则直接报错。对eval和inline script直接拒绝。

针对CSRF的防御

Origin + Referrer

image.png

token

image.png 使用时需要注意

  • token需要和具体用户绑定

  • token需要设置过期时间

iframe攻击(同源请求)

设置X-Frame_Options响应头部

X-Frame_Options:DENY/SAMEORIGIN

DENY:当前页面不能作为iframe加载

SAMEORIGIN:必须是同源页面才是iframe加载

避免用户信息被携带:SameSite Cookie

从根源上解决CSRF的攻击,限制的是Cookie的domain属性以及页面域名

这种方式对于依赖第三方资源的情况也是适用的

image.png

防御CSRF的正确方法

建立中间件,在其中生成防御CSRF的策略

针对Injection的防御

将SQL语句提前编译

  • 找到项目中查询SQL的地方

  • 使用prepared statement,

针对DoS的防御

Regex DoS

  • 完善Review的的工作,避免写出贪婪正则表达式匹配

  • 用代码扫描工具对代码进行测试

  • 拒绝使用用户提供的正则

DDoS

image.png

传输层的防御--防御中间人

HTTPS : HTTP + TLS

image.png

HTTPS的一些特性

  • 可靠性:加密

  • 完整性:MAC验证

  • 不可抵赖性:数字签名

HSTS

将HTTP主动升级到HTTPS

总结与感悟

本节课针对Web安全相关进行了讲解,从主流攻击方式介绍再到防御手段介绍,我了解了很多以前不知道也没去在意的东西。随着网络的发展和时代的进步,网络安全一直以来都是大家关心的热点问题,作为未来的前端工程师,未来一定会面对这个问题,再者我们自然也有责任有义务维护好安全的环境。之前我一直处于前端学习阶段,并没有接触和关注安全相关问题,上完这节课之后我有了大概的了解,但也仅仅是了解的程度而已,目前我还缺乏计算机网络方面及浏览器响应机制的知识,因此听起来还是比较费劲。希望以后有了相关知识储备以及项目经验之后,对这方面有更多的认识。