關(guān)于在IE下的一個(gè)安全BUG --可用于跟蹤用戶的系統(tǒng)鼠標(biāo)位置
IE下的DHTML有各種MS$的私有特征,已經(jīng)是眾所周知。其中有個(gè)比較有趣就是:event.screenX和event.screenY,可以獲得系統(tǒng)級(jí)別的鼠標(biāo)位置坐標(biāo)。
咋一聽(tīng),其實(shí)也覺(jué)得沒(méi)什么。屏幕上的坐標(biāo)無(wú)非就是:瀏覽器客戶區(qū)域里的坐標(biāo) + 瀏覽器窗口坐標(biāo) + 客戶區(qū)偏移,僅此而已。
IE本身就可以通過(guò)event和screen對(duì)象得到各種屏幕和窗體位置有關(guān)的信息。
然而,真正詭異的事還沒(méi)開(kāi)始!按照標(biāo)準(zhǔn)的DOM模型定義,只有在觸發(fā)某個(gè)事件的時(shí)候,才能從event中獲得與該事件相關(guān)的參數(shù)。
也就是說(shuō),只有觸發(fā)mousemove,等這類mouseXXX鼠標(biāo)事件時(shí),才有權(quán)獲取和鼠標(biāo)有關(guān)的參數(shù)。然而,在萬(wàn)惡的IE下,任何事件觸發(fā)后,都能獲取event.screenX和event.screenY,甚至在頁(yè)面最小化時(shí)!
當(dāng)然,你可能會(huì)說(shuō)這還是需要依賴一個(gè)事件。然而,這里的事件可以是任意的onxxx這類回調(diào)函數(shù),并非局限于UI事件。于是,我們可以人為的制造它!
最簡(jiǎn)單的例子,給一個(gè)new Image設(shè)置一個(gè)無(wú)效的src,它的onerror事件立馬就觸發(fā)了!
于是我們可以在onerror里獲取event.screenX,然后繼續(xù)設(shè)置無(wú)效的src,于是就可以實(shí)時(shí)跟蹤用戶屏幕級(jí)別的鼠標(biāo)指針了。因?yàn)閛nerror的產(chǎn)生不限于任何UI消息,因此頁(yè)面最小化或非活動(dòng)狀態(tài)下,事件仍然能夠觸發(fā)!
至于能不能獲取鼠標(biāo)或鍵盤哪個(gè)鍵被按下,很不幸,真的不可以。如果捕捉全局按鍵,哪豈不是可以監(jiān)聽(tīng)密碼輸入了。。。
事實(shí)上,onerror這類非UI事件的觸發(fā),根本就沒(méi)有任何鼠標(biāo)或鍵盤參數(shù)傳入瀏覽器窗體,所以也就無(wú)法獲取各種鼠標(biāo)鍵盤信息。至于event.screenX,唯一的解釋估計(jì)它是event的一個(gè)Getter,內(nèi)部直接調(diào)用了GetCursorPos這個(gè)Win API,并非事件的觸發(fā)者提供了這屬性。
如果某個(gè)頁(yè)面植入了這樣的跟蹤代碼,然后將坐標(biāo)位置通過(guò)socket.io實(shí)時(shí)傳送回來(lái),豈不是很有趣。。。
相關(guān)文章
javascript實(shí)現(xiàn)漂亮的拖動(dòng)層,窗口拖拽特效
一個(gè)可關(guān)閉、可隨意拖動(dòng)位置的網(wǎng)頁(yè)彈出層代碼,美化的相當(dāng)漂亮,簡(jiǎn)潔實(shí)用,還可拖動(dòng)改變大小,通過(guò)八個(gè)方向改變大小,學(xué)習(xí)這類特效編寫的網(wǎng)頁(yè)設(shè)計(jì)者可參閱一下2015-04-04js獲取input長(zhǎng)度并根據(jù)頁(yè)面寬度設(shè)置其大小及居中對(duì)齊
這篇文章主要介紹了js獲取input長(zhǎng)度并根據(jù)頁(yè)面寬度設(shè)置其大小及居中對(duì)齊的方法,需要的朋友可以參考下2014-08-08微信小程序商城分類滾動(dòng)列表錨點(diǎn)的項(xiàng)目實(shí)踐
本文主要介紹了微信小程序商城分類滾動(dòng)列表錨點(diǎn)的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04js實(shí)現(xiàn)數(shù)字跳動(dòng)到指定數(shù)字
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)數(shù)字跳動(dòng)到指定數(shù)字,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08Javascript中call與apply的學(xué)習(xí)筆記
經(jīng)常看到這倆哥們,看來(lái)看去都是講他們的區(qū)別,一直沒(méi)搞太清楚作用究竟是什么,現(xiàn)在記錄下自己理解,有錯(cuò)的話希望指出!2014-09-09分享一個(gè)插件實(shí)現(xiàn)水珠自動(dòng)下落效果
本篇文章給大家分享一個(gè)插件制作水珠自動(dòng)下落效果,效果非常逼真,感興趣的朋友可以添加下面代碼運(yùn)行看看效果哦2016-06-06