XSS和CSRF攻击原理和预防

35 阅读2分钟

XSS和CSRF攻击原理和预防

XSS(跨站脚本攻击)

分类:

  • 反射型:浏览器将恶意代码提交到服务器,服务器将恶意代码传回到客户端
    
  • 储存型:浏览器提交恶意代码到服务端,服务器将恶意代码储存到数据库
    
  • DOM型:恶意代码仅在客户端运行
    

主要有两种方式注入恶意代码:

1.在URL中的query参数中注入script脚本

http://xxxxx?kid="<script>恶意代码</script>"

为了隐藏脚本,攻击者还可以将url转为为短链接的形式。

https://t.cn/A6xyzQ

短链接的原理主要是:短链接服务器维护一张映射表,将短链接与原始URL建立映射关系,在用户访问短链接时,服务器返回一个301的重定向响应。游览器接收到后自动跳转到真实地址。

当浏览器访问 https://t.cn/A6xyzQ 时: 1️⃣ 服务器从 URL 中取出短码 A6xyzQ 2️⃣ 在数据库里查找对应的长链接 3️⃣ 返回一个 HTTP 301 或 302 重定向响应 4️⃣ 浏览器接收后自动跳转到真实地址

2.在页面可以输入的地方注入恶意逻辑

当这些输入的内容被服务器保存后,如果是公开内容,当其它用户下次访问改网站就会执行内容中的恶意脚本。

预防措施:将用户输入的<>标签符号用&lt、&gt替代,转换为纯文本。设置httponly让客户端无法通过JS访问到。

CSRF(跨站请求伪造)

CSRF 攻击是劫持用户的会话,并冒充用户身份发送恶意请求。它利用了Web浏览器在发送请求时,会自动携带目标站点 Cookie 的机制。

预防措施

使用token来作身份校验,客户端在每次请求时将token携带在请求头里面。

服务端将 Cookie 设置为 SameSite=StrictSameSite=Lax。这样浏览器就不会在跨站请求中携带该 Cookie。

通过检查 HTTP 请求头中的 Referer (来源) 或 Origin (原始域) 字段,判断请求是否来自于本站域名。