xss攻击

99 阅读2分钟

跨站脚本攻击,主要方式是注入代码的形式,获取到页面的cookie等用户信息。

引起原因

网站没有对恶意代码进行过滤,导致跟正常的代码在一起运行了,但是浏览器没有办法分辨代码的好坏,所以统一执行了。

攻击方式

存储型、DOM型、反射类型

  • 存储型:将恶意脚本会存储在目标服务器上,当浏览器请求数据时, 脚本从服务器传回并执行。[比如说输入input标签、或者其他表单形式]
  • DOM型:修改页面的dom节点。[比如在路径上加入一个的形式获取到cookie]
  • 反射型:诱导用户点击有恶意代码的URL,服务器接受后将数据传输给浏览器,浏览器会把带有XSS的代码当成脚本执行。

攻击步骤

  • 存储型 [一般用于保存数据的情况,如发表评论、提交表单等]
    • 攻击者将恶意代码输入并存入目标数据库。
    • 用户打开页面,服务器会从数据库里面提取出来,转化成HTML再给到浏览器
    • 浏览器渲染页面会执行恶意代码。
  • 反射型
    • 攻击者将恶意的代码构建在URL里面。
    • 用户拿到“特殊”的URL并打开,服务器会从URL里面提取恶意代码出来,转化成HTML再给到浏览器
    • 浏览器渲染页面也会执行恶意代码
  • DOM型
    • 攻击者将恶意的代码构建在URL里面
    • 用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行
    • 浏览器渲染页面执行恶意代码

反射型与存储型的区别:数据的存储地址不一样。存储型是存放在数据库,反射型是存储在服务器上面

反射型、存储型与DOM型的区别:前两者都是有服务器引起的XSS攻击,是服务器的安全漏洞,最后一个是前端自身的安全漏洞

防范方式

  • 控制输入的长度
  • 输入转义[使用库]
  • 使用CSP建立白名单
    • 设置 HTTP 首部中的 Content-Security-Policy
    • 设置 meta 标签的方式
  • 对于敏感信息,可使用验证码或者使用cookie为http-only的手段[禁止http读取]

攻击地址

prompt.ml/0

alf.nu/alert1?worl…

xss-game.appspot.com/