跳到主要内容

Web 攻击模型

为什么所有客户端输入都不可信?​

  • 客户端可以自由变更和篡改 HTTP 请求;
  • 服务端必须把一切来自客户端的请求视为不可信请求;
  • 推论: 安全校验的边界只能在服务端;

主动攻击与被动攻击有什么区别?​

类型攻击者行为典型手段
主动攻击主动访问 Web 应用并传入攻击代码SQL 注入、OS 命令注入
被动攻击预设陷阱代码诱导用户触发, 以用户为跳板攻击XSS、CSRF

通用的防御策略有哪些?​

  • 客户端验证: 只能作为 UI 提示, 不可作为安全依据;
  • 服务端验证:
    • 输入值验证: 校验请求参数是否合规;
    • 输入值转义: 转义请求参数, 使攻击代码失效;
  • 浏览器与服务端的安全策略: 同源策略、CSP 与安全响应首部等;