虚假来电:HTML5振动API的恶意使用

国际太阳娱乐网站2138 4

虚假来电:HTML5振动API的恶意使用

2014/01/16 · HTML5 · 3
评论 ·
HTML5

本文由 伯乐在线 –
梧桐
翻译。未经许可,禁止转载!
英文出处:Terence
Eden。欢迎加入翻译组。

一个新的API出来了。HTML5
(很快)将支持用户设备振动。这明显是很有趣的事情,比如它可以用户触发提醒,提升游戏体验,以及其他各种好玩的事情,例如通过振动发送摩斯代码。

到目前为止,Chrome(以及其他Android浏览器)要使用位置信息、摄像头、地址簿等资源必须申请权限。这是一种安全措施防止你的个人信息在未授权的情况下泄露。

而现在使用HTML5振动API并不会在屏幕上触发警告。因为一般认为用这个功能几乎没有危害,毕竟在现实中它能干的坏事无非是持续消耗电量。事实就是这样简单吗?我不敢肯定。

引言

邪念

我们都看过那种无耻的广告做得跟Windows弹出窗一模一样,它们通常发出一个正当的系统请求:更新Java或类似的。

假如一个恶意网页弹出一个虚假的系统提示并同时振动,你有多大的信心能区分一个合法的弹出框和一个png图片?毕竟手机振动了,你就会认为它是真实的系统提示。

国际太阳娱乐网站2138 1

(图1)

这时候你是收到了一个“空投”炸弹,还是说网页在跟你开个小玩笑?

页面广告自动播放声音本来就很烦人了。自动振动跟它比起来毫不逊色。回想一下你在满屏幕搜索那个推销保险的广告。

目前振动的强度还不能控制,只能控制持续时间。当然通过构造恶意代码去突破没打补丁的浏览器也不是不可能的,甚至可以让电机持续高负荷运转直到损坏。

从毕业到年已经整整7年,期间一直从事.net开发做c/s从 c# 转到 wpf
而后又开始做b/s 用silverlight,从最开始的arcgis engine
到后来的silverlight api
,去年开始一直在涉及开源的GIS方面应用开发openlayers geoserver
dotspatial等。c/s方面还可以用.net的一些开源库来搞,bs原本想凑合用sl混混,但是不会js实在是让我工作起来很难受。这次正好有个项目用涉及到的系统都是提供js接口,本屌丝连html页面标签都认不全,无比蛋疼之下只好下定决心。

虚假来电

如果与HTML5
Audio一起使用,完全可以创建一个很真实的虚假”来电“,既有振动也有铃声。一旦”接听“,页面就可以播放一段音频:”喂,尽快回打给我,我的号码是“一个吸费号码”。接下来还可以使用URI自动打开拨号界面。

国际太阳娱乐网站2138 2

(图2)

国际太阳娱乐网站2138 ,你能告诉我上面说的是真实的来电吗?如果你够仔细或许会发现。但如果页面正在播放你的默认铃声,然后设备还在振动,这时你就很可能迷糊。如果和WebRTC呼叫绑定,那实际上你看到的就是一个精心构造的骗局。

javaScript 介绍

视频演示

本文作者还录了一段视频,放在Youtube上了。

通用跨平台的脚本语言。

源代码

下面是一个很基本的例子,你可以在手机上试验一下。(或点击这里看示例)

JavaScript

<body> <script type="text/javascript">
navigator.vibrate = navigator.vibrate || navigator.webkitVibrate ||
navigator.mozVibrate || navigator.msVibrate; navigator.vibrate([1000,
500, 1000, 500, 1000, 500, 1000, 500, 1000, 500, 1000, 500, 1000,
500]); </script> <img width="100%"
src="phone.png"
onclick="window.location.href='tel:09098790815';"
/> <audio autoplay="autoplay"> <source
src="ring.mp3" /> </audio> </body>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
&lt;body&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
  navigator.vibrate = navigator.vibrate ||
       navigator.webkitVibrate ||
       navigator.mozVibrate ||
       navigator.msVibrate;
 
  navigator.vibrate([1000, 500, 1000, 500, 1000, 500, 1000, 500, 1000, 500, 1000, 500, 1000, 500]);
&lt;/script&gt;
&lt;img width=&quot;100%&quot; src=&quot;phone.png&quot; onclick=&quot;window.location.href=&#039;tel:09098790815&#039;;&quot; /&gt;
&lt;audio autoplay=&quot;autoplay&quot;&gt;  
  &lt;source src=&quot;ring.mp3&quot; /&gt;  
&lt;/audio&gt;
&lt;/body&gt;

目前只有Android平台的Firefox支持,但毫无疑问其他浏览器将会跟进。

js主要由以下三部分组成

提示:

Firefox是Andriod平台上唯一支持振动的。其他的比如三星浏览器,Chrome或者Opera都不支持。Iphone也不支持。Windows
Phone或黑莓根本没人在乎的,所以我就不测试了。

当页面使用振动API的时候,Firefox目前并不会申请权限。

你认为浏览器在振动前是否应该有警告?还是说这种风险太低?我想这要看那些骗子公司是否会利用这一点了,或者要看用户是否反对了。

更新:
感谢Reddit和HackerNews上面的评论,BB10似乎也支持振动API,Windows
Phone不支持。

赞 收藏 3
评论

ECMAScript 核心

关于作者:梧桐

国际太阳娱乐网站2138 3

(新浪微博:@jakiewoo_vp9)

个人主页 ·
我的文章 ·
13

国际太阳娱乐网站2138 4

DOM 文档对象模型

BOM 浏览器对象模型

 

ECMAScript:

1997年 制定的 ECMA-262标准 中定义了ECMAScript

最新一版的标准时2009年的ECMA-262第5版 简称ECMAScript 5

从第一版到第五版 如果用C#的角度来解释就可以理解为C#1.0-5.0这种概念。

ECMAScript与web浏览器没有关系,Web浏览器只是ECMAScript实现可能的宿主环境之一,其他宿主比如Adobe
Flash。

ECMAScript
主要规定了如下内容:语法、类型、语句、关键字、保留字、操作符、对象。

javaScript实现了ECMAScript,Adobe ActionScript也同样实现了ECMAScript。

到了2008年,五大主流web浏览器(IE,Firefox,Safari,Chrome,Opera)全部做到了与ECMA-262兼容。对于ecmascript5的兼容如下:

Opera 11.60+、
Internet Explorer 9+、Firefox 4+、Safari 5.1+、Chrome 13

 

文档对象模型(DOM)

文档对象模型是针对XML的,但经过扩展用于HTML的应用程序API。DOM把整个页面映射为一个多层节点结构。HTML或者XML页面中的每个组成部分都是这种类型的节点,这些节点又包含着不同类型的数据。

DOM并不是针对js的,很多语言都实现了DOM.

DOM Level1 于1998年10月成为W3C的推荐标准。

DOM1由两个模块组成:

DOM core

DOM HTML

其中DOM核心规定了如何映射基于XML的文档结构。DOM
HTML模块则在DOM核心的基础上加以扩展,添加了针对HTML的对象和方法。

DOM2在DOM1的基础上增加了鼠标和用户界面事件、范围、遍历等。DOM3又进一步扩展了DOM。

浏览器对象模型(BOM)

BOM可以控制浏览器显示的页面以为的部分。但是BOM没有相关的标准这也导致了各种问题。HTML5致力于把很多BOM功能写入正式规范。人们习惯把所有针对浏览器的js扩展算作BOM的一部分,如:弹出新的浏览器窗口,移动、缩放关闭浏览器窗口,cookies支持,提供浏览器信息的navigator对象,提供浏览器加载页面信息的location对象,提供用户显示器分辨率的screen对象xmlhttprequest和activexobject这也的自定义对象。

由于没有BOM的标准,因此每个浏览器都有自己的实现。

 

JavaScript的版本

当前最新版本应该是2010年7月的1.82 对应的IE版本是9

 

在HTML中使用JavaScript

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图