Web 开发的安全之旅|青训营笔记

110 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第6天。本节课的主题是【Web 开发的安全之旅】,授课老师为刘宇晨。

本篇笔记分别对课程中所讲的几个要点进行一些解读,如若有误,欢迎大家在评论区交流,指出不当之处。

WEB安全

攻击角度

1.Hacker:

XSS跨站攻击:

原因:不对用户提交的内容过滤

存储型XSS:

  • 恶意脚本存在数据库中
  • 访问页面→读数据导致攻击
  • 危害最大

反射XSS:

  • 不涉及数据库
  • 从URL上攻击

DOM-based XSS:

  • 不需服务器参与
  • 恶意攻击发起+执行全在浏览器完成

Mutation-based XSS:

Cross-site request forgery(CSRF):跨站伪造请求

  • 用户不知情的情况下利用cookie
  • Get/beyond Get
  • eg:银行中奖,点击进去获取到cookie

Injection:注入-删除+读取+修改

SQL Injection

CLI

OS command

eg. 读取+修改 nginx page,代理网站请求到另外网站,另外网站流量徒增,抵抗不住攻击,服务下线

Server-Side Request Forgery(SSRF):服务端伪造请求

image.png

DOS:

  1. ReDOS:基于正则表达式的DOS

    传入字符串到含有贪婪匹配模式的服务端

image.png

  1. DDoS

    1. 直接攻击IP
    2. 任意API
    3. 消耗带宽

    eg.洪水攻击

image.png

  1. 中间人攻击

image.png

防御角度

XSS:

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

前端:

  • 主流框架防御XSS

后端

  • node

怎么对付动态DOM:

  • 对string转译
  • 检查上传SVG
  • 禁止自动跳转

用户自定义样式:

image.png

Same-orgin Policy:

  • 协议
  • 域名
  • 端口

HTTP请求:同源👌 跨域✖

Content Security Policy(CSP):

  • 识别安全源/域
  • 允许安全源脚本执行,否则报错
  • 禁止eval+ inline script 标签

在浏览器头部声明标签

防止CSRF:

image.png

iframe攻击:

在服务器响应头禁止

防止CSRF:

SameSite Cookie

Injection

SQL:

找到项目中使用SQL的地方,使用prepared statement

Beyond:

  • 最小权限原则
  • 允许名单+过滤
  • URL类型参数限制

DOS

  • 代码扫描+正则性能测试
  • ✖用户提供的正则

DDos:

流量治理

  1. 过滤:

    • API网关
    • 负载均衡
  2. 抗量:

  • CDN
  • 自动扩容
  • 非核心服务降级

传输层:

使用HTTPS:不可抵赖性

SSL(安全套接层)+HTTP=HTTPS

(TLS是基于SSL3.0开发的协议)

SSL是独立于http的协议,也可用于telnet smtp等。

SSL目前采用:公开密钥加密方式。

共享密钥的难处:密钥可能被窃取

公开密钥:一把公钥一把私钥

https:混合加密机制

因为公钥处理速度慢。

HSTS:将HTTP主动升级到HTTPS

SRI:Subresource Integrity(SRI):防止静态资源被篡改,核实Hash值

使用依赖导致相关安全事件:

left-pad事件

eslint-scope事件

event-stream事件

参考资料