目录

CSRF 和 XSS 攻击是什么

目录

CSRF(跨站请求伪造,Cross-Site Request Forgery)和 XSS(跨站脚本攻击,Cross-Site Scripting)是两种常见的 Web 安全漏洞。它们主要涉及的领域是 Web 应用程序的安全和用户数据的保护。

CSRF

CSRF 攻击是指攻击者利用用户在另一个站点上的身份,并在用户不知情的情况下执行或访问受害者站点的某些操作。例如:当用户在已登录的情况下访问攻击者的网站,攻击者可能通过欺骗用户访问受害者网站,从而在受害者网站上执行未经授权的操作。

场景:

  1. 用户访问 A 网站并登录,此时 A 网站会给 A 用户的浏览器存储一个 Cookie
  2. 用户在未退出登录 A 网站的情况下,访问 B 网站
  3. 黑客以 B 网站的 Domain 和 A 网站的 Cookie 给 A 网站发送请求
  4. A 网站没有防范就会攻击成功,获取到用户权限

常见的 CSRF 攻击防范方法有:

  1. 使用 CSRF Token:在表单中添加一个随机生成的 token,服务器会验证这个值,以确保只有合法的请求被接受。
  2. 验证 REFERER:检查 HTTP 请求头中的值,确保请求来自合法的域名。
  3. 添加 SameSite Cookie 属性:限制浏览器只能在同一个域下发送 cookie,不会在跨站请求中发送。

XSS

XSS 是一种允许攻击者将恶意代码(通常是 JavaScript 脚本)注入受害者网站中的漏洞。这种攻击的主要目的是窃取用户的敏感信息,诸如登录凭据、会话 cookie 或其他个人信息。XSS 攻击可以分为三种类型:存储型、反射型和 DOM 型。

场景:

  1. 公司的网站有一个搜索页面,会根据 URL 参数决定搜索内容
  2. 像类似 http://xxx/search?keyword="><script>alert('XSS');</script> 这样的内容就会被提交
  3. 浏览器无法分辨这是恶意代码,就会执行其中的脚本内容,弹出一个警告。如果内容更复杂那就会造成更大的危害

常见的 XSS 攻击防范方法有:

  1. 输入过滤:验证用户提交的数据,限制非法字符和标签。
  2. 输出转义:当显示用户输入的数据时,使用适当的转义或编码避免执行恶意代码。
  3. 启用内容安全策略(CSP, Content Security Policy):设置安全策略规则,限制页面资源的来源和类型,从而降低 XSS 攻击的风险。