Web 开发的安全之旅(防御篇)| 青训营笔记

79 阅读1分钟

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

一、本堂课重点内容:

两个角度看web安全:

  1. 假如你是一个开发者 -- 防御

二、详细知识点介绍:

2.1 XSS的防御

  • 永远不信任用户提交的内容
  • 不要将用户提交的内容直接转换成DOM

工具:

  • 主流框架默认防御 XSS
  • google-closure-library 服务端(Node)
  • DOMPurify

⚠️必须动态生成DOM,注意点:

  1. string-->Dom。对string进行转义
  2. 上传svg。对svg进行扫描,因为svg里允许插入js脚本,所以要进行扫描
  3. 自定义跳转连接。做好过滤
  4. 自定义样式

2.2 CSRF的防御

image.png

🌟 token

image.png

先有页面,后有请求

在服务器接收到一个合法页面请求时,服务器可以通过标识来判断是否是一个合法来源的请求。

image.png

🌟iframe

image.png

设置 X-Frame-Option:DENY(禁止作为Iframe)/SAMEORIGIN(允许同源)

  • 限制 Origin,攻击者会使用同源请求来到达攻击。

  • 使用 iframe 来到达绕过 Origin 限制达到攻击。

2.3 Same-origin Policy 同源策略(SOP)

协议 + 域名 + 端口号

Content Security Policy(CSP)

  • 哪些源(域名)被认为是安全的
  • 来自安全源的脚本可以执行,否则直接抛出错误
  • eval + inline script 说不

CSRF 的攻击是由于携带了用户 cookie,如果不携带 cookie,就从根源上解决了这种 CSRF 攻击。

三、课后个人总结:

  • 安全无小事

  • 使用的依赖(npm package,甚至是NodeJS)可能成为最薄弱的一环

    • left-pad 事件
    • eslint-scope事件
    • event-stream事件
  • 保持学习心态

四、引用参考: