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

98 阅读2分钟

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

3防御篇

3.1 针对XSS

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

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

3.1.1XSS——现成工具

前端

  • 主流框架默认防御XSS
  • google-closure-library

服务端(Node)

  • DOMPurify

3.1.2XSS——用户要求

【用户要求】必须动态生成DOM

3.1.2.1string直接生成DOM

对string进行转移

new DOMParse();

3.1.2.2上传svg

对svg文件进行扫描

<svg>
    <script>alert('xss');</script>
</svg>

3.1.2.3Blob动态生成script

3.1.2.4自定义样式

同源策略:Same-origin Policy

  • 协议
  • 域名
  • 端口

http请求:同源OK,跨域No

3.2Content Security Policy(CSP)

csp:内容安全策略

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

3.2.1 CSP

服务器的响应头部

Content-Security-Policy:script-src'self' //同源
Content-Security-Policy:script-src'self' https://domain.com

浏览器meta

<meta http-equiv='Content-Security-Policy' content='script-src self'>

3.2.2 CSRF的防御

if 伪造请求 全等于≡ 异常来源

then限制请求来源->限制伪造请求

请求头部:

  • Origin

    同源请求中,GET+HEAD不发送

  • Referer

3.2.2.1 CSRF——token

除了Origin+Referer

其他判断【请求来自于合法来源】的方式

if(请求来自合法页面)

then(服务器接收过页面请求)

then(服务器可以标识)

3.2.2.2 CSRF——iframe攻击

攻击者:限制Origin是吧,那我同源请求

3.2.2.3 CSRF anti-pattern

GET !== GET+POST

攻击者一石二鸟

开发者不能偷懒

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

3.2.3.1SameSite Cookie

  • 依赖Cookie的第三方服务怎么办?
  • 内嵌一个X站播放器,识别不了用户登陆态,发不了弹幕
Set-Cookie:SameSite=None;Secure;

3.2.3.2 SameSite vs CORS

SameSiteCORS
Cookie发送资源读写(HTTP请求)
domain vs 页面域名资源域名vs页面域名
“我跟你说个事儿,出这屋我可就不认了”白名单

3.2.3.3SameSite demo

FirstPartyCookie

3PartyCookie

3.3 Injection

  • 找到项目中查询SQL的地方
  • 使用prepared statement

3.3.1 Injection beyond SQL

  • 最小权限原则

    sudo||root

  • 建立允许名单+过滤

    rm

  • 对URL类型参数进行协议、域名、IP等限制

    访问内网

3.4防御DoS

3.4.1 Regex DoS

  • Code Review ( 拒绝 /(ab*)+/ )
  • 代码扫描+正则性能测试
  • 拒绝用户提供的使用正则

3.4.2 DDoS

  • 流量治理

    负载均衡 (过滤)

    API网关 (过滤)

    CDN (抗量)

  • 快速自动扩容 (抗量)

  • 非核心服务降级(抗量)

3.5 传输层——防御中间人

3.5.1HTTPS的一些特性

  • 可靠性:加密
  • 完整性:MAC验证
  • 不可抵赖性:数字签名

3.5.2HTTPS——完整性

传输内容(加密信息+加密信息_hash)——>接收方

if(hash(加密信息)≡加密信息_hash){

ok

}else{

not ok

}

数字签名

签名执行者:

  • privateKey(自己藏好)
  • publicKey(公开可见)

3.5.3HTTPS——不可抵赖:数字签名

CA:Certificate Authority证书机构

3.5.4 Subresource Integrity(SRI)