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

89 阅读2分钟

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

从攻击角度看

(Cross-Site Scripting,跨站脚本)XSS

XSS攻击(跨站脚本攻击)通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScriptActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容
XSS主要利用了

  • 开发者盲目信任用户提交的内容
  • 前端开发工程师直接将用户提交的字符串转化成了DOM image.png

XSS的特点

  • 通常难以在UI上感知(暗地执行脚本)
  • 窃取用户信息(如cookie、token)
  • 绘制UI(例如弹窗),诱骗用户点击/填写表单

XSS攻击类型

  1. Stored XSS(存储型XSS攻击)
    • 恶意脚本被存储在数据库中
    • 在用户访问页面的时候读取数据,导致被攻击
    • 这种攻击类型危害最大,对全部用户可见
  2. Reflected XSS(反射型XSS攻击)
    从服务器这一段注入脚本
    • 不涉及数据库
    • 从URL上攻击
  3. DOM-based XSS(基于DOM的XSS)
    • 不需要服务器的参与
    • 恶意攻击的发起和执行全在浏览器中完成

Reflected XSS与DOM-based XSS的区别
完成脚本注入的地方不同 image.png
4. Mutation-based XSS

  • 利用了浏览器渲染DOM的特性(独特优化)
  • 不同浏览器会有区别(按浏览器进行攻击)

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

  • 在用户不知情的前提下
  • 利用用户权限(cookie)
  • 构造指定HTTP请求,窃取或修改用户敏感信息

SQL Injection

SQL注入攻击是最常见的注入攻击 大概流程 image.png 其他注入

  • CLI命令行
  • OS command系统命令行

不是injection,但是原理类似的Server-Side Request Forgery(SSRF), 服务器端伪造请求

Dos(Denial of Service)

通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,,导致请求挤压,进而雪崩效应

从防御角度看

防御XSS攻击

原则

  • 永远不信任用户提交的内容
  • 不要将用户提交的内容直接转换成DOM, 应该将用户提交的内容当做字符串对待