Web 开发安全 - 防御篇 | 青训营笔记

37 阅读1分钟

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


一、本堂课重点内容:

  • XSS 的防御
  • 防御 CSRF 的正确姿势
  • 防御 Injection
  • 防御DOS
  • 防御中间人

二、详细知识点介绍:

  • 1.XSS的防御

首先要特别注意的就是:

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

XSS--现场工具
前端:主流框架默认防御;google-closure-library
服务端:DOMPurify

XSS--耗子尾汁

  • !!!【用户需求】不讲武德,必须动态生成DOM
  • !!!string-DOM
  • !!!上传SVG
  • !!!Blod动态生成script
  • !!!自定义样式

  • 2.防御 CSRF 的正确姿势

image.png
除了Origin+Referrer,是否有其他判断【请求来自于合法来源】的方式 ?那答案肯定是有的,具体的内容如下:

第一种: image.png

第二种:

image.png

那为了解决上面这些问题,那就提出来SameSite Cookie

image.png 第一Cookie是可以的,但是第三方的Cookie是不行的,因为SameSite Cookie限制的是Cookie domain和页面域名 , 但是同时又有问题:依赖Cookie的第三方服务怎么办?内嵌一个X站播放器,识别不了用户登录态,发不了弹幕,这该怎么办呢?但是SameSite Cookie对于这些方面都是考虑到了的 ,比如下方图片就可以解释

image.png

防御CSRF的正确姿势

image.png


  • 3.防御 Injection

image.png


  • 4.防御DOS
  • 1.Code Review(X/(ab*)+/)
  • 2.代码扫描+正则性能测试
  • 3.X 用户提供的使用正则

image.png


  • 5.防御中间人

image.png

HTTP的过程(简单介绍):

image.png