如何维护网页按钮不被XSS自动点击,对抗蠕虫

对抗蠕虫 —— 如何让按钮不被 JS 自动点击

2017/07/25 · JavaScript
· XSS

原来的文章出处:
EtherDream   

前言

XSS 自动点按钮有怎么着危机?

在应酬网络里,很多操作都是透过点击按钮发起的,例如发布留言。若是留言系统有
XSS,用户中招后除外大旨攻击外,还可以够举行传播 —— XSS
自动填入留言内容,并效仿点击发表按钮,于是就能发表涵盖恶意代码的留言。好友看了高级中等高校招生后,又不胫而走给他们的管鲍之交。。。从而形成蠕虫扩散。

那么有没有一种体制,让「公布留言」必须通过用户的「真实点击」按钮才能到位,而一筹莫展通过脚本自动完毕?那样就能放缓蠕虫传播速度了。

前言

XSS 自动点按钮有哪些损伤?

在社交互联网里,很多操作都以由此点击按钮发起的,例如公布留言。假使留言系统有
XSS,用户中招后除外核心攻击外,仍可以展开传播 —— XSS
自动填入留言内容,并仿照点击发表按钮,于是就能发布涵盖恶意代码的留言。好友看了中招后,又流传给他们的知心人。。。从而形成蠕虫扩散。

那正是说有没有一种体制,让「发表留言」必须经过用户的「真实点击」按钮才能不辱任务,而望洋兴叹通过脚本自动完成?那样就能舒缓蠕虫传播速度了。

实现

这一个想法听起来好像不可行:要是发布留言需求带上用户作为音信,那么 XSS
完全能够伪造一份行为数据,后端根本不可能识别。

除非,用户在点击按钮时会产生二个「特殊数据」,让后端校验它。

可是,XSS 也足以一向调用按钮成分的 click
方法,那样效果和用户点击依旧一样。后端仍不可能辨别是「脚本点的」照旧「用户点的」。

诸如此类看来,大家不得不敬重好这一个「按钮成分」,让它没办法被 XSS
访问到。例如,把按钮放到多个 如何维护网页按钮不被XSS自动点击,对抗蠕虫。区别源的 iframe 里,那样就和 XSS
所在的条件隔绝了!

唯独,那样还不够。如果 XSS
破解了那个「特殊数据」的变通规则,那么即可自个儿伪造三个,然后径直调用
HTTP 接口宣布留言。所以,大家得找一个不行伪造的硬标识。

实在,有个很简短的艺术:大家大概让 HTTP 请求也由此 iframe
发送。那样,后端通过 referer 即可检测请求是还是不是为 iframe 发起的。毕竟,XSS
是无能为力伪造 referer 的!

前言

前言

实现

那些想法听起来好像不可行:如若公布留言要求带上用户作为音讯,那么 XSS
完全能够伪造一份行为数据,后端根本无法识别。

唯有,用户在点击按钮时会发生多个「特殊数据」,让后端校验它。

只是,XSS 也足以一贯调用按钮成分的 click
方法,那样效果和用户点击还是一样。后端仍力不从心辨认是「脚本点的」还是「用户点的」。

如此看来,我们不得不爱慕好那一个「按钮成分」,让它没办法被 XSS
访问到。例如,把按钮放到3个 不一致源的 iframe 里,那样就和 XSS
所在的环境隔开分离了!

不过,那样还不够。借使 XSS
破解了那一个「特殊数据」的变通规则,那么即可自个儿伪造一个,然后直接调用
HTTP 接口揭橥留言。所以,我们得找贰个不得伪造的硬标识。

实则,有个很简短的点子:大家简直让 HTTP 请求也透过 iframe
发送。那样,后端通过 referer 即可检查和测试请求是还是不是为 iframe 发起的。毕竟,XSS
是力不从心伪造 referer 的!

演示

Demo:

只顾:那么些案例不是看能否注入 XSS,而是看能或不能通过当前页面包车型大巴 JS
自动发留言!

其余,通过第壹方服务器发表是不算的。那里为简便,省略了登录态;真实场地下,会话
Cookie 是 HttpOnly 的,不只怕被 JS
获取到,也就不可能让第③方服务器代替发布。

细节:

  1. 使用者加载 safebutton.js,引入 SafeButton

  2. 使用者实例化 SafeButton 对象 A,创建出1个不相同源的 iframe
    作为按钮界面

  3. 用户点击 iframe 按钮后,内部变量 S 置为
    true,同时将点击消息告知主页面(postMessage)

  4. 主页面收到消息后,让 A 发生 onclick 事件

  5. 使用者将 HTTP 请求数据,通过 A 的 send 方法扔给 iframe

  6. iframe 校验内部变量 S:若为 true,则将数据通过 AJAX
    发送;不然扬弃

  7. 服务器校验 referer:若为 iframe 的地方,则继续工作逻辑;不然遗弃

  8. iframe 收到 AJAX 再次回到后,将结果扔给主页面

  9. A 产生 onreceive 事件,在那之中蕴含 HTTP 重返结果

个中 No.6 的手续最为首要。便是这一步,使得未经用户点击,XSS 强制扔给
iframe 的音信变得不算!

亚洲必赢官网 1

XSS 自动点按钮有何样风险?

XSS 自动点按钮有怎样加害?

演示

Demo:

注意:这些案例不是看能还是无法注入 XSS,而是看能否透过当前页面包车型客车 JS
自动发留言!

除此以外,通过第叁方服务器公布是不算的。那里为不难,省略了登录态;真实场面下,会话
Cookie 是 HttpOnly 的,无法被 JS
获取到,也就不能让第一方服务器代替公布。

细节:

  1. 使用者加载 safebutton.js,引入 SafeButton
  2. 使用者实例化 SafeButton 对象 A,创设出3个分裂源的 iframe
    作为按钮界面
  3. 用户点击 iframe 按钮后,内部变量 S 置为
    true,同时将点击音信告诉主页面(postMessage)
  4. 主页面收到消息后,让 A 产生 onclick 事件
  5. 使用者将 HTTP 请求数据,通过 A 的 send 方法扔给 iframe
  6. iframe 校验内部变量 S:若为 true,则将数据通过 AJAX
    发送;不然扬弃
  7. 服务器校验 referer:若为 iframe 的地点,则继续工作逻辑;不然放弃
  8. iframe 收到 AJAX 再次回到后,将结果扔给主页面
  9. A 产生 onreceive 事件,个中蕴蓄 HTTP 再次回到结果

在那之中 No.6 的手续最为关键。就是这一步,使得未经用户点击,XSS 强制扔给
iframe 的音信变得不算!

亚洲必赢官网 2

缺陷

理所当然,这些方案阻挡不住点击威胁 —— XSS 可以把 iframe
成分放大至整个页面,并设置全透明。

如此用户只要在页面包车型大巴别样地点点一下,iframe 的 S 状态就改成 true
了,于是就能绕过 No.6。

在社交互联网里,很多操作都以通过点击按钮发起的,例如发布留言。借使留言系统有
XSS 漏洞,用户中招后 XSS 除了攻击之外,仍是能够展开传播 ——
它能自动填入留言内容,并点击公布按钮,即可产生带有恶意代码的留言。好友看了中招后,又不胫而走给他俩的知心人。。。从而形成蠕虫扩散。

在社交互联网里,很多操作都以由此点击按钮发起的,例如发布留言。假若留言系统有
XSS 漏洞,用户中招后 XSS 除了攻击之外,还可以展开传播 ——
它能自动填入留言内容,并点击揭橥按钮,即可发生带有恶意代码的留言。好友看了高级中等高校招生后,又不胫而走给他俩的好友。。。从而形成蠕虫扩散。

缺陷

当然,那些方案阻挡不住点击威胁 —— XSS 能够把 iframe
成分放大至全体页面,并安装全透明。

诸如此类用户只要在页面包车型地铁任何地点点一下,iframe 的 S 状态就改成 true
了,于是就能绕过 No.6。

结尾

本来,安全防卫有胜过无。并且该方案的改造资金也不是非常大,后端只是增添一个referer
判断而已;前端也只需改造个别按钮,例如发帖按钮,像点赞那种按钮就没须要保险了。

那么,有没有一种机制,让「发布留言」必须经过用户的「真实点击」按钮才能成就,而望洋兴叹透过脚本自动达成?那样就能舒缓蠕虫传播速度了。

这便是说,有没有一种体制,让「发布留言」必须透过用户的「真实点击」按钮才能完毕,而一筹莫展通过脚本自动实现?那样就能缓慢蠕虫传播速度了。

结尾

自然,安全防卫有胜过无。并且该方案的改建资金也不是一点都不小,后端只是扩张3个referer
判断而已;前端也只需改造个别按钮,例如发帖按钮,像点赞那种按钮就没须要保障了。

1 赞 1 收藏
评论

亚洲必赢官网 3

实现

实现

这一个想法听起来好像不可行。倘若揭橥留言要求带上用户作为新闻,那么 XSS
完全可以以假乱真一份行为数据,后端根本不恐怕识别。

以此想法听起来好像不可行。若是公布留言须求带上用户作为音信,那么 XSS
完全能够以假乱真一份行为数据,后端根本不能够识别。

唯有,用户在点击按钮时会产生叁个「特殊数据」,让后端校验它。

只有,用户在点击按钮时会发生贰个「特殊数据」,让后端校验它。

不过,XSS 也足以一直调用按钮成分的 click
方法,那样效果和用户点击如故一如既往。后端仍力不从心分辨,是脚本点的,依旧用户点的。

可是,XSS 也足以一直调用按钮成分的 click
方法,那样效果和用户点击仍旧一样。后端仍力不从心分辨,是脚本点的,照旧用户点的。

那般看来,大家不得不保护好那一个「按钮成分」,让它无法被 XSS
访问到。例如,放在三个分歧源的 iframe 里,那样就和 XSS 所在的环境隔开分离了!

那样看来,大家只可以爱惜好那个「按钮成分」,让它没办法被 XSS
访问到。例如,放在二个分化源的 iframe 里,那样就和 XSS 所在的条件隔离了!

只是,那样还不够。要是 XSS
破解了这几个「特殊数据」的变迁规则,那么即可本身伪造3个,然后径直调用
HTTP 接口发表留言。所以,我们得找二个不可伪造的硬标识。

但是,那样还不够。就算 XSS
破解了那一个「特殊数据」的转变规则,那么即可本身伪造3个,然后直接调用
HTTP 接口公布留言。所以,我们得找五个不足伪造的硬标识。

事实上,有个很容易的点子:大家几乎让 HTTP 请求也通过 iframe
发送。那样,后端通过 referer 即可检查和测试请求是还是不是为 iframe 发起的。究竟,XSS
是力不从心伪造 referer 的!

骨子里,有个很简短的格局:大家大约让 HTTP 请求也因此 iframe
发送。那样,后端通过 referer 即可检查和测试请求是不是为 iframe 发起的。毕竟,XSS
是心有余而力不足伪造 referer 的!

演示

演示

Demo:

Demo:

留神:那么些案例不是看能还是不能注入 XSS,而是看能或无法经过当前页面包车型大巴 JS
自动发留言!

注意:那几个案例不是看能否注入 XSS,而是看能否透过当前页面包车型大巴 JS
自动发留言!

除此以外,通过第3方服务器发表是不算的。那里为简单,省略了登录态;真实场面下,会话
Cookie 是 HttpOnly 的,不恐怕被 JS
获取到,也就不恐怕让第2方服务器代替发布。

其它,通过第3方服务器发表是不算的。那里为简便,省略了登录态;真实场地下,会话
Cookie 是 HttpOnly 的,无法被 JS
获取到,也就无法让第①方服务器代替公布。

细节:

细节:

  1. 使用者加载 safebutton.js,引入 SafeButton 类

  2. 使用者实例化 SafeButton 对象 A,创设出一个分化源的 iframe
    作为按钮界面

  3. 用户点击 iframe 按钮后,内部变量 S 置为
    true,同时将点击消息告诉主页面(postMessage)

  4. 主页面收到音信后,让 A 产生 onclick 事件

  5. 使用者将 HTTP 请求数据,通过 A 的 send 方法扔给 iframe

  6. iframe 校验内部变量 S:若为 true,则将数据经过 AJAX 发送;不然扬弃

  7. 服务器校验 referer:若为 iframe 的地方,则一而再工作逻辑;不然放弃

  8. iframe 收到 AJAX 再次来到后,将结果扔给主页面

  9. A 发生 onreceive 事件,当中蕴含 HTTP 重回结果

  1. 使用者加载 safebutton.js,引入 SafeButton 类
  2. 使用者实例化 SafeButton 对象 A,创制出3个差别源的 iframe
    作为按钮界面
  3. 用户点击 iframe 按钮后,内部变量 S 置为
    true,同时将点击音讯告诉主页面(postMessage)
  4. 主页面收到音讯后,让 A 产生 onclick 事件
  5. 使用者将 HTTP 请求数据,通过 A 的 send 方法扔给 iframe
  6. iframe 校验内部变量 S:若为 true,则将数据通过 AJAX 发送;不然放任
  7. 服务器校验 referer:若为 iframe 的地点,则持续工作逻辑;不然放弃
  8. iframe 收到 AJAX 重临后,将结果扔给主页面
  9. A 发生 onreceive 事件,个中富含 HTTP 重返结果

个中 No.6 的手续最为主要。就是这一步,使得未经用户点击,XSS 强制扔给
iframe 的音信变得不算!

里面 No.6 的步骤最为重庆大学。就是这一步,使得未经用户点击,XSS 强制扔给
iframe 的新闻变得不行!

亚洲必赢官网 4

亚洲必赢官网 5

缺陷

自然,那一个方案阻挡不住点击威迫 —— XSS 能够把 iframe
成分放大至一切页面,并设置全透明。

自然,那个方案阻挡不住点击勒迫 —— XSS 能够把 iframe
成分放大至整个页面,并设置全透明。

亚洲必赢官网,如此用户只要在页面包车型大巴别的地方点一下,iframe 的 S 状态就改为 true
了,于是就能绕过 No.6。

那样用户一旦在页面包车型客车别的地点点一下,iframe 的 S 状态就成为 true
了,于是就能绕过 No.6。

结尾

结尾

当然,安全防卫有胜过无。并且该方案的改造资金也不是相当的大,后端只是扩大一个referer
判断而已;前端也只需改造个别按钮,例如发帖按钮,像点赞那种按钮就没须要保险了。

当然,安全防卫有胜过无。并且该方案的改造资金也不是极大,后端只是扩充三个referer
判断而已;前端也只需改造个别按钮,例如发帖按钮,像点赞那种按钮就没须求保证了。

【编辑推荐】

【编辑推荐】

网站地图xml地图