Skip to main content

前端安全

xss 跨站脚本攻击

跨站脚本攻击(Cross Site Scripting)

xss 攻击的原因:XSS 攻击的主要原因之一是在将用户生成的输入呈现在页面上。例如,攻击者可能能够使用 JavaScript 注入恶意代码,并且该代码可以在你的应用呈现 DOM 时执行。

此恶意代码最终可能会访问并窃取 用户 Token、cookie 以及浏览器中存储的其他敏感信息。

防范方法

  1. 输入验证:

    • 使用白名单模式验证输入,限制允许的字符(如仅允许字母、数字和特定符号)。
  2. 输出编码:

    • 对动态生成的 HTML 内容进行编码,使用库如 DOMPurify。
    • 在输出文本前,使用 encodeURIComponent() 对 URL 进行编码。
  3. 使用安全的 API:

    • 避免 innerHTML,使用 textContent 来插入文本。

    • 对图像使用 src 属性,而不是直接插入 HTML 标签。

  4. 内容安全策略 (CSP):

    • 配置 HTTP 头 Content-Security-Policy,限制可加载的脚本和样式源。
    • 例如,禁止内联脚本:default-src 'self'; script-src 'self';
  5. HTTPOnly 和 Secure 标志:

    • 在设置 cookie 时,使用 HttpOnly 和 Secure 标志,防止客户端 JavaScript 访问。
  6. 避免使用 eval():

    • 避免动态执行字符串,使用其他方法来处理数据,例如 JSON.parse()。

跨站请求伪造(CSRF)

跨站请求伪造(CSRF, Cross-Site Request Forgery)是一种攻击手段,它迫使已登录用户的 web 应用在没有用户知情的情况下,发送恶意请求。

产生原因:

1.用户登录受信任网站 A,并在本地生成 Cookie。

2.用户访问危险网站 B, 网站 B 中发送请求给网站 A,请求会自动带上 Cookie。

防范方法

  • 在每个敏感操作的请求中加入使用从服务器生成的 CSRF 令牌,服务器验证该令牌是否有效。

  • 服务器可以检查请求中的 Referer 或 Origin 头,确保请求来自可信的来源。