HTML5安全风险详析之四:Web Worker攻击

摘要:
使用WebWorker可以将计算过程放入新线程中执行,这将避免这种情况。DDOS攻击2.postMessage导致的问题是WebWorker无法访问DOM,只能通过postMessage API与主线程通信。

一、WebWorker介绍

由于Javascript是单线程执行的,在执行过程中浏览器不能执行其它Javascript脚本,UI渲染线程也会被挂起,从而导致浏览器进入僵死状态。使用WebWorker可以将计算过程放入一个新线程里去执行将避免这种情况的出现。这样我们可以同时执行多个JS任务而不会阻塞浏览器,非常适合异步交互和大规模计算,这在以前是很难做到的。

下面一张图形象的揭示了WebWorker的作用:没有WebWorker时,如果我们要煎一个鸡蛋饼,需要先和面粉,然后打鸡蛋,最后才能煎饼;使用WebWorker,可以在和面粉的同时打鸡蛋,这两者同时进行,都完成后就能开始煎饼,极大的缩短了等待的时间。

HTML5安全风险详析之四:Web Worker攻击第1张

但是这样一个好的特性也会引入攻击的可能。

二、WebWorker攻击

1、Botnet

攻击的方式包括DDos攻击、发送垃圾邮件,用户一旦访问恶意页面或者网站时,页面的恶意代码就能把用户的浏览器当作肉鸡,利用WebWorker大规模执行多线程攻击,例如DDos攻击、发送垃圾邮件或者进行网络嗅探。

HTML5安全风险详析之四:Web Worker攻击第2张

DDOS攻击(分布式拒绝服务攻击)

2、postMessage带来的问题

WebWorker无法访问DOM,只能通过postMessageAPI和主线程通信。postMessage在HTML5中被引入,用来解决跨域或者跨线程数据交互的问题。但是如果messaging可以接收任何来源的信息,此页面有可能会被攻击;另外postMessage不通过服务器,如果不经过验证和过滤,可能成为XSS注入点。例如如下代码没有对输入数据进行验证和清洗,攻击者完全可以构造恶意的data来注入页面DOM,构造XSS攻击,形如“><script></script>”等等。

  1. 01.worker.addEventListener(‘message’,function(e) {    
  2. 02.   document.getElementById(‘result’).innerHTML = e.data;    
  3. 03.}, false);  

三、攻击工具

Ravan是一个JS的分布式计算系统,可以用HTML5Web Worker通过后台加密的JS多线程脚本来执行蛮力攻击。

HTML5安全风险详析之四:Web Worker攻击第3张

四、预防之道

1、对于用户来说,不要访问不安全的站点。

2、使用postMessage时需要验证来源可信;另外不要使用innerHTML,现代浏览器提供了textContent属性,可以帮助对HTML标签进行过滤,或者你可以自行编写过滤的逻辑和函数。

免责声明:文章转载自《HTML5安全风险详析之四:Web Worker攻击》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇夺命雷公狗---node.js---9实现页面的跳转游标(cursor)--显式游标&amp;amp;隐式游标、游标四个属性、循环遍历下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MFC用PostMessage传递消息

1.自定义消息ID。 #define WM_MY_MESSAGE (WM_USER+100)         WM_USER为windows系统为非系统消息保留的ID,这里至少要用100,因为其它控件的消息会占用一部分。 2. 定义消息处理函数。 消息处理函数为消息目标类的成员函数。首先应该在.h 文件中声明。这里以主窗口类为例,主窗口类名 C...

html5基础---canvas

1. canvas简介 ​ <canvas> 是 HTML5 新增的元素,可用于通过使用JavaScript中的脚本来绘制图形 ​ · 使用<canvas>标签时,建议要成对出现,不要使用闭合的形式。 ​ · canvas元素默认具有高宽 300px height: 150px 2. 替换内容 ​ 由于某些较老的浏览器(尤...

iframe中子父页面跨域通讯

目录 #跨域发送信息#window.postMessage()语法 #跨域接收信息 #示例Demo 在非跨域的情况下,iframe中的子父页面可以很方便的通讯,但是在跨域的情况下,只能通过window.postMessage()方法来向其他页面发送信息,其他页面要通过window.addEventListener()监听事件来接收信息; #跨...

谷歌浏览器 html5的声音和视频不能自动播放处理

AI模型开发就选MindSpore!新特性、新工具上线!>>> 声音无法自动播放这个在IOS/Android上面一直是个惯例,桌面版的Safari在2017年的11版本也宣布禁掉带有声音的多媒体自动播放功能,紧接着在2018年4月份发布的Chrome 66也正式关掉了声音自动播放,也就是说<audio autopaly><...

[转]小程序实现原理解析

本文转自:https://www.cnblogs.com/mthoutai/p/7365085.html 概述 作为一名前端开发,假设你还停留在应用开发层面,那你就OUT了,快来跟我一起探讨下小程序框架本身底层实现的一些技术细节吧,让我们从小程序的执行机制来深度了解小程序。 小程序是基于WEB规范,採用HTML,CSS和JS等搭建的一套框架,微信官方给它们...

html5自动横屏的方法

html5自动横屏的方法<pre>var evt = "onorientationchange" in window ? "orientationchange" : "resize";window.addEventListener(evt, function() {console.log(evt);var width = document.do...