Web平台安全知识点大纲


1. Web安全目标与攻击模型

1.1 核心目标

  • 用户保护: 防范恶意网站和网络攻击;
  • 站点隔离: 确保不同站点间数据隔离;
    • 完整性: 站点A无法篡改站点B的用户会话;
    • 机密性: 站点A无法窃取站点B的用户数据;

1.2 攻击模型

  • 恶意网站: 通过钓鱼或注入攻击危害用户;
  • 恶意外部资源: 第三方脚本/广告携带攻击载荷;
  • 网络攻击者: 窃听或篡改HTTP流量;
  • 恶意软件攻击者: 控制用户设备或浏览器;

2. Web基础技术

2.1 HTML与安全转义

  • HTML结构: 通过标签定义文档结构与内容;
    • 转义规则: 特殊字符需转义为实体(如<&lt;);
  • 示例漏洞: 未转义的用户输入可能导致XSS攻击;

2.2 JavaScript与DOM

  • 动态交互: JavaScript可修改DOM内容;

    • 示例代码:

      1
      2
      3
      4
      5
      6
      7
      <script>
      function addTodo(text) {
      var newitem = document.createElement("li");
      newitem.textContent = text;
      document.getElementById("todo").appendChild(newitem);
      }
      </script>
  • 安全风险: 恶意脚本可劫持用户操作或窃取数据;

2.3 URL结构与编码

  • URL组成: scheme://host:port/path?query#fragment;
    • 编码规则: 非ASCII字符需UTF-8编码(如空格→%20);
  • 安全隐患: 未编码的URL可能被解析错误或用于注入攻击;

2.4 HTTP协议

  • 请求-响应模型: 无状态协议,依赖Cookie维护会话;
    • 常见方法: GET(获取数据)、POST(提交数据);
    • 状态码: 200(成功)、404(未找到)、302(重定向);

3. Cookie机制与安全

3.1 Cookie基础

  • 作用: 维护会话状态(如登录态、购物车);
  • 设置与读取:
    • 设置范围: 当前域或其父域(非公共后缀);
      • 示例: login.site.com可为site.com设置Cookie;
    • 读取范围: 当前域及其父域;

3.2 安全属性

  • Secure属性: 仅通过HTTPS传输Cookie;
  • HttpOnly属性: 禁止JavaScript访问Cookie;
  • SameSite属性:
    • Strict: 禁止跨站请求携带Cookie;
    • Lax: 允许导航类跨站请求(如链接点击);

3.3 安全隐患

  • 默认风险:
    • HTTPS Cookie可能通过HTTP泄露;
    • 未设置HttpOnly的Cookie可被第三方脚本读取;

4. 浏览器执行模型与同源策略(SOP)

4.1 浏览器加载流程

  1. 加载URL内容;
  2. 解析HTML并执行内联JavaScript;
  3. 递归加载子资源(脚本、图片、CSS);

4.2 同源策略(SOP)

  • 定义: 限制不同源之间的数据访问;
    • 源的组成: scheme://domain:port;
    • 隔离资源: Cookies、DOM存储、JavaScript命名空间;
  • 跨域资源限制:
    • 脚本访问: facebook.com的JS无法读取gmail.com的API响应;
    • 图像加载: 允许显示跨域图片,但禁止通过Canvas读取像素;

4.3 跨域资源共享(CORS)

  • 机制: 通过预检请求(OPTIONS)授权跨域访问;

    • 示例:
1
2
OPTIONS /data HTTP/1.1
Origin: https://siteA.com
1
2
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *

5. 现代网站的安全挑战

5.1 第三方资源依赖

  • 示例: 新闻网站加载Google Analytics脚本、广告框架;
  • 风险: 第三方资源可能携带恶意代码或泄露用户数据;

5.2 复杂攻击面

  • 多源混合: 单个页面可能涉及数十个域和数百个资源;
  • 防御难点: 难以确保所有第三方资源的安全性;

6. 安全防御总结

攻击类型 防御措施
XSS HTML转义、CSP策略、避免内联脚本
CSRF SameSite Cookie、CSRF令牌、Referer验证
Cookie泄露 Secure + HttpOnly属性、限制Cookie作用域
跨域数据泄露 严格SOP、CORS白名单控制

3. 经典Web攻击与防御

3.1 跨站请求伪造(CSRF)

  • 攻击原理: 诱导用户浏览器向目标站点发送已认证的请求;

    • 示例:

      1
      <img src="https://bank.com/transfer?to=attacker&amount=10000" />
    • 防御措施:

      • Referer验证: 检查请求来源域(隐私限制导致不可靠);
      • CSRF令牌: 在表单中嵌入动态令牌(需绑定会话);
      • SameSite Cookie: 设置为LaxStrict;

3.2 SQL注入(SQLi)

  • 攻击原理: 通过未过滤输入篡改SQL语义;

    • 示例:

      1
      SELECT * FROM users WHERE username = 'aroyc' AND password='' OR 1=1 --';
    • 防御措施:

      • 参数化查询: 分离SQL语句与数据(如cursor.execute(sql, [user]));
      • 输入验证: 限制特殊字符(如单引号);

3.3 跨站脚本攻击(XSS)

  • 类型:
    • 反射型XSS: 恶意输入通过URL反射到页面(如https://site.com/hello?name=<script>alert(1)</script>);
    • 存储型XSS: 恶意内容持久化存储后展示给其他用户(如用户资料注入脚本);
  • 防御措施:
    • 输入过滤与转义: 转义HTML特殊字符(如<&lt;);
    • 内容安全策略(CSP): 限制脚本来源(如Content-Security-Policy: default-src 'self');

4. 攻击案例与影响

4.1 CSRF攻击实例

  • 银行转账: 攻击者构造自动转账请求,利用用户已登录状态完成操作;
  • 登录CSRF: 诱骗用户登录攻击者账户,劫持其数据;

4.2 XSS蠕虫案例(Samy Worm)

  • 传播机制: 通过MySpace用户资料注入自传播脚本;
  • 影响: 20小时内感染超过100万用户;

4.3 SQL注入后果

  • 数据泄露: 窃取用户表数据;
  • 数据破坏: 执行DROP TABLE users删除关键表;

5. 防御技术总结

攻击类型 防御措施
CSRF SameSite Cookie、CSRF令牌、Referer验证
SQL注入 参数化查询、输入过滤
XSS 输入转义、CSP策略、避免内联脚本
Cookie安全 Secure + HttpOnly + SameSite属性、限制作用域