一個新的API出來了。HTML5 (很快)將支援使用者裝置振動。這明顯是很有趣的事情,比如它可以使用者觸發提醒,提升遊戲體驗,以及其他各種好玩的事情,例如通過振動傳送摩斯程式碼。
到目前為止,Chrome(以及其他Android瀏覽器)要使用位置資訊、攝像頭、地址簿等資源必須申請許可權。這是一種安全措施防止你的個人資訊在未授權的情況下洩露。
而現在使用HTML5振動API並不會在螢幕上觸發警告。因為一般認為用這個功能幾乎沒有危害,畢竟在現實中它能幹的壞事無非是持續消耗電量。事實就是這樣簡單嗎?我不敢肯定。
邪念
我們都看過那種無恥的廣告做得跟Windows彈出窗一模一樣,它們通常發出一個正當的系統請求:更新Java或類似的。
假如一個惡意網頁彈出一個虛假的系統提示並同時振動,你有多大的信心能區分一個合法的彈出框和一個png圖片?畢竟手機振動了,你就會認為它是真實的系統提示。
(圖1)
這時候你是收到了一個“空投”炸彈,還是說網頁在跟你開個小玩笑?
頁面廣告自動播放聲音本來就很煩人了。自動振動跟它比起來毫不遜色。回想一下你在滿螢幕搜尋那個推銷保險的廣告。
目前振動的強度還不能控制,只能控制持續時間。當然通過構造惡意程式碼去突破沒打補丁的瀏覽器也不是不可能的,甚至可以讓電機持續高負荷運轉直到損壞。
虛假來電
如果與HTML5 Audio一起使用,完全可以建立一個很真實的虛假”來電“,既有振動也有鈴聲。一旦”接聽“,頁面就可以播放一段音訊:”喂,儘快回打給我,我的號碼是“一個吸費號碼”。接下來還可以使用URI自動開啟撥號介面。
(圖2)
你能告訴我上面說的是真實的來電嗎?如果你夠仔細或許會發現。但如果頁面正在播放你的預設鈴聲,然後裝置還在振動,這時你就很可能迷糊。如果和WebRTC呼叫繫結,那實際上你看到的就是一個精心構造的騙局。
視訊演示
本文作者還錄了一段視訊,放在Youtube上了。http://www.youtube.com/watch?v=VqsRya3ZNoE
原始碼
下面是一個很基本的例子,你可以在手機上試驗一下。(或點選這裡看示例)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<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> |
目前只有Android平臺的Firefox支援,但毫無疑問其他瀏覽器將會跟進。
提示:
Firefox是Andriod平臺上唯一支援振動的。其他的比如三星瀏覽器,Chrome或者Opera都不支援。Iphone也不支援。Windows Phone或黑莓根本沒人在乎的,所以我就不測試了。
當頁面使用振動API的時候,Firefox目前並不會申請許可權。
你認為瀏覽器在振動前是否應該有警告?還是說這種風險太低?我想這要看那些騙子公司是否會利用這一點了,或者要看使用者是否反對了。
更新: 感謝Reddit和HackerNews上面的評論,BB10似乎也支援振動API,Windows Phone不支援。