Web安全|青训营笔记

121 阅读2分钟

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

Web开发安全指南

一、攻击者视角

1、XSS(Cross-Site Scripting):跨站脚本攻击

  • 定义:跨站脚本攻击通常是指通过存在安全漏洞的Web网站运行非法的HTML标签或JavaScript进行的一种攻击
  • 原理:攻击者王Web页面中插入恶意且可执行的网页脚本代码,当用户浏览时,嵌入其中的恶意代码就会被执行,从而达到攻击者盗取用户信息或进一步侵犯安全隐私的目的
  • 特点:

    • 通常很难从UI上感知(暗地执行脚本)
    • 窃取用户信息(cookie/token)
    • 绘制UI(例如弹窗),诱骗用户输入信息

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

  • 特点:

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

image-20230208003235198

二、防御者视角

1、防御XSS攻击

  • 永远不信任用户的提交内容
  • 不要将用户提交的内容直接转换为DOM
  • 尽量不要从 URL,document.referrer,document.forms 等这种 DOM API 中获取数据直接渲染。

2、CSP(Content Security Policy):内容安全策略

  • CSP能够允许我们开发者自定:

    • 哪些源(域名)被认为是安全的
    • 来自安全源的脚本可以执行,否则直接抛错
    • 禁止eval+inline script

3、防御CSRF攻击

  • 措施:

    • Get 请求不对数据进行修改
    • 不让第三方网站访问到用户 Cookie
    • 阻止第三方网站请求接口
    • 请求时附带验证信息,比如验证码或者 Token

4、防止传输层被攻击

  • 使用Https协议,其中Https协议的特点有:

    • 可靠性:加密
    • 完整性:MAC验证
    • 不可抵赖性:数字签名