美文网首页web安全与性能优化
Web安全之 XSS 攻击与防御(附 github 示例)

Web安全之 XSS 攻击与防御(附 github 示例)

作者: 卿可津 | 来源:发表于2017-05-06 22:28 被阅读158次

(本文演示 github:https://github.com/zphhhhh/node-secure

什么是 XSS 攻击?

XSS 全称 Cross-Site Scripting,可译为:跨站脚本攻击,由于 CSS 已被占用,因此简称 XSS。

一句话理解 XSS:不可信内容经处理后被当做可信内容再渲染。

XSS 攻击的种类

XSS 攻击可细分为 反射型 XSS、持久型 XSS、DOM XSS,前两种针对服务器,后一种针对客户端。

XSS 攻击的种类.png

反射型 XSS

不可信内容提交到服务器,立即在响应中被返回。

比如:有一个登陆页面需要输入用户名,提交后会显示 “你好,XXX”,这里的 XXX 即有可能存在反射型 XSS 攻击漏洞。

反射型 XSS.png

持久型 XSS

不可信内容提交到服务器,被保存到服务器数据库,下次需要时被当做可信内容被返回。

比如:恶意代码写入个人资料页,所有访问我的资料的朋友都会遭到攻击

持久型 XSS.png

DOM XSS

不可信内容被插入到页面DOM节点。

比如:网络劫持(使用数据流量访问网页时出现的网络服务商链接)

DOM XSS.png 百度首页被运营商植入 DOM XSS.png

XSS 攻击的常见攻击效果

  • 获取用户的 cookie,实现会话劫持
    • 盗取网银资产
  • 在页面伪造表单,获取用户的账号密码
  • XSS Worm(终极手段)
  • 等等

防御 XSS

为防御 XSS,我们首先要知道 XSS 攻击的本质是不安全的
HTML 注入,可通过在 HTML、CSS、JS 或 HTTP 协议层次上进行防范。下面提供一些常用的防御策略:

  • 输入检查
    • 用户名、邮箱等表单验证(前台/服务器二次验证)
    • 富文本使用白名单机制等
  • 输出检查
    • HTML-Encoder
    • js-Encoder
  • HTTP 头部:HttpOnly(四两拨千千)
    • 设置 cookie 时加入 HttpOnly 可使 js 脚本无法获取 cookie
  • HTTP 头部:CSP(Content Security Policy)
    • 定义允许的资源加载地址,比如图片 / 视频 / JS 脚本等
  • HTTPS加密访问
    • 有效防止 DOM XSS 攻击

参考:
《白帽子讲 Web 安全》

相关文章

网友评论

    本文标题:Web安全之 XSS 攻击与防御(附 github 示例)

    本文链接:https://www.haomeiwen.com/subject/mcpytxtx.html