Skip to content

CSRF 和 XSS

CSRF 攻击

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

它是指攻击者利用了用户的身份信息,执行了用户非本意的操作。

CSRF示意图

防御手段防御力问题
不使用 cookie⭐️⭐️⭐️⭐️⭐️兼容性略差
ssr 会遇到困难,但可解决
使用 sameSite⭐️⭐️⭐️⭐️兼容性差
容易挡住自己人
使用 CSRF token⭐️⭐️⭐️⭐️⭐️获取到 token 后未进行操作仍然会被攻击
使用 referer 防护⭐️⭐️过去很常用,现在已经发现漏洞

XSS攻击

XSS(Cross Site Scripting,跨站脚本攻击),是指攻击者利用站点的漏洞,在表单提交时,在表单内容中加入一些恶意脚本,当其他正常用户浏览页面,而页面中刚好出现攻击者的恶意脚本时,脚本被执行,从而使得页面遭到破坏,或者用户信息被窃取。

image-20211101145257717

服务器端对用户提交的内容进行过滤或编码。

  • 过滤:去掉一些危险的标签,去掉一些危险的属性
  • 编码:对危险的标签进行 HTML 实体编码

面试题

  1. 介绍 CSRF 攻击。

    参考答案

    CSRF 是跨站请求伪造,是一种挟制用户在当前已登录的 Web 应用上执行非本意的操作的攻击方法。 它首先引导用户访问一个危险网站,当用户访问网站后,网站会发送请求到被攻击的站点,这次请求会携带用户的 cookie 发送,因此就利用了用户的身份信息完成攻击

    防御 CSRF 攻击有多种手段:

    1. 不使用 cookie。
    2. 为表单添加校验的 token 校验。
    3. cookie 中使用 sameSite 字段。
    4. 服务器检查 referer 字段。
  2. 介绍 XSS 攻击。

    参考答案

    XSS 是指跨站脚本攻击。攻击者利用站点的漏洞,在表单提交时,在表单内容中加入一些恶意脚本,当其他正常用户浏览页面,而页面中刚好出现攻击者的恶意脚本时,脚本被执行,从而使得页面遭到破坏,或者用户信息被窃取。

    要防范 XSS 攻击,需要在服务器端过滤脚本代码,将一些危险的元素和属性去掉或对元素进行 HTML 实体编码。