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

92 阅读2分钟

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

面临错综复杂的网络环境,在了解哪些手段会造成 Web 安全事故之后,篇笔记将通过第二种「防御者」角色的视角,剖析不同攻击手段的技术细节,逐个击破安全漏洞,更好地维护 Web 安全。

针对XSS攻击

永远不要相信用户提交的任何内容,永远不要直接生成DOM,当作字符串进行对待

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

如果有一些用户需求就是要求动态生成DOM

同源策略 同源:协议、域名、端口号都相等 非同源的请求一般是不可行的,需要看请求的类型,和对应服务器的配置

CPS Content Security Policy

  • 允许开发者定义哪些域名被认为是安全的。
  • 来自安全源的脚本可以执行,否则直接报错
  • 对eval_inline script 说不

跨站伪造请求的防御方式

除了Origin_Referrer,其他判断请求来自合法来源的方式

  • 先有页面,后有请求
    if(请求来自合法页面)
    then(服务器接受页面请求)
    then(服务器可以标识)

CSRF--token

image.png

CSRF--iframe攻击

这是一种同源的请求,所以光限制来源无法完全解决。 可以用X-Frame-Option:DENY/SAMORIGIN 可以防御这种攻击

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

image.png

限制的是:

  1. Cookie 的domain属性
  2. 页面域名

SameSite

  • cookie发送
  • domain vs 页面域名

CORS(更接近白名单的机制)

  • 资源读写(HTTP请求)
  • 资源域名 vs 页面域名

防御CSRF的策略是:做一个中间件

Injection beyond SQL

  • 最小权限原则
  • 建立白名单
  • 对URL上的参数类型,进行协议、域名、IP进行限制

Regex DoS

  • code review
  • 代码扫描+正则性能测试
  • 不要接受用户提供的使用正则

DDos

  1. 流量治理
  • 负载均衡
  • API网关
  • CDN
  1. 快速扩容
  2. 非核心服务降级