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

96 阅读2分钟

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


从攻击、防御两个视角讨论在前端开发中实用的安全问题

一、攻击

注入恶意脚本

  1. 跨站脚本攻击XSS:用户提交内容含有脚本,访问页面读取数据时被攻击;攻击数据库,用户个人信息。
  2. 反射型XSS:URL中含有脚本字段,从服务端注入恶意脚本。
  3. 基于DOM的XSS攻击:在浏览器端发起和执行恶习攻击。
  4. 基于Mutation的XSS攻击:浏览器渲染差异

跨站伪造请求

欺骗用户获取用户权限(cokkie),构造HTTP请求,窃取或修改用户信息

demo <a href="">抽奖</a> <img style="" src="">

get请求之外

SOL注入攻击

请求注入SQL参数,服务器上运行,删改数据,暴露重要文件。

服务拒绝

  1. 基于正则表达式的DoS:贪婪,多次匹配回溯:响应时间++
  2. Distributed DoS:短时间大量僵尸设备请求,消耗带宽;SYN洪水工具

传输层:中间人攻击

于浏览器与服务器间窃取信息,修改请求。

  1. 明文传输
  2. 信息篡改未检验
  3. 对方身份不可知

二、防御

XSS

永远不信任用户提交的任何信息(string),勿转换成DOM

  • 主流框架默认防御XSS
  • 服务端 字符串转义DOMPureify
  • 扫描svg文件
  • 不允许用户自定义跳转链接

同源策略SOP:协议,域名,端口号

内容安全策略CSP:寻找安全源执行

CSRF防御

  • 异常请求来源,限制请求;服务器接收过的页面
  • token和用户绑定,过期
  • iframe——X-Fream-Options: DENY
  • GET!=GET+POST
  • SameSite Cookie 限制domain Cookie

Injection

找到查询SQL的地方,使用prepared ststement

beyondSQL:最小权限,建立白名单,过滤操作( -rm )

防御DoS

  • × /(ab*)+/
  • 禁用正则
  • code review
  • 流量治理
  • 抗量、扩容

传输层

  • HTTPS协议
  • 数字签名
  • SRI

Web Application Security: Exploitation and Countermeasures for Modern Web Applications 1st Edition