关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置

 更新时间:2013年04月17日 11:31:14   作者:  
本篇文章小编将为大家介绍,关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置。需要的朋友可以参考一下

IE下的DHTML有各种MS$的私有特征,已经是众所周知。其中有个比较有趣就是:event.screenX和event.screenY,可以获得系统级别的鼠标位置坐标。

咋一听,其实也觉得没什么。屏幕上的坐标无非就是:浏览器客户区域里的坐标 + 浏览器窗口坐标 + 客户区偏移,仅此而已。

IE本身就可以通过event和screen对象得到各种屏幕和窗体位置有关的信息。

然而,真正诡异的事还没开始!按照标准的DOM模型定义,只有在触发某个事件的时候,才能从event中获得与该事件相关的参数。

也就是说,只有触发mousemove,等这类mouseXXX鼠标事件时,才有权获取和鼠标有关的参数。然而,在万恶的IE下,任何事件触发后,都能获取event.screenX和event.screenY,甚至在页面最小化时!

当然,你可能会说这还是需要依赖一个事件。然而,这里的事件可以是任意的onxxx这类回调函数,并非局限于UI事件。于是,我们可以人为的制造它!

最简单的例子,给一个new Image设置一个无效的src,它的onerror事件立马就触发了!

于是我们可以在onerror里获取event.screenX,然后继续设置无效的src,于是就可以实时跟踪用户屏幕级别的鼠标指针了。因为onerror的产生不限于任何UI消息,因此页面最小化或非活动状态下,事件仍然能够触发!

至于能不能获取鼠标或键盘哪个键被按下,很不幸,真的不可以。如果捕捉全局按键,哪岂不是可以监听密码输入了。。。

事实上,onerror这类非UI事件的触发,根本就没有任何鼠标或键盘参数传入浏览器窗体,所以也就无法获取各种鼠标键盘信息。至于event.screenX,唯一的解释估计它是event的一个Getter,内部直接调用了GetCursorPos这个Win API,并非事件的触发者提供了这属性。

如果某个页面植入了这样的跟踪代码,然后将坐标位置通过socket.io实时传送回来,岂不是很有趣。。。

相关文章

  • javascript实现漂亮的拖动层,窗口拖拽特效

    javascript实现漂亮的拖动层,窗口拖拽特效

    一个可关闭、可随意拖动位置的网页弹出层代码,美化的相当漂亮,简洁实用,还可拖动改变大小,通过八个方向改变大小,学习这类特效编写的网页设计者可参阅一下
    2015-04-04
  • JS锚点的设置与使用方法

    JS锚点的设置与使用方法

    这篇文章主要介绍了JS锚点的设置与使用方法,涉及javascript针对页面元素属性的简单动态操作技巧,需要的朋友可以参考下
    2016-09-09
  • js获取input长度并根据页面宽度设置其大小及居中对齐

    js获取input长度并根据页面宽度设置其大小及居中对齐

    这篇文章主要介绍了js获取input长度并根据页面宽度设置其大小及居中对齐的方法,需要的朋友可以参考下
    2014-08-08
  • 光标的一些操作总结

    光标的一些操作总结

    IE下的Range操作比Mozilla下强很多,这里只讨论IE下的操作,这里选介绍几个光标定位的特点
    2006-10-10
  • 微信小程序商城分类滚动列表锚点的项目实践

    微信小程序商城分类滚动列表锚点的项目实践

    本文主要介绍了微信小程序商城分类滚动列表锚点的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 使用webpack4编译并压缩ES6代码的方法示例

    使用webpack4编译并压缩ES6代码的方法示例

    这篇文章主要介绍了使用webpack4编译并压缩ES6代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • js实现数字跳动到指定数字

    js实现数字跳动到指定数字

    这篇文章主要为大家详细介绍了js实现数字跳动到指定数字,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • Javascript之this关键字深入解析

    Javascript之this关键字深入解析

    如我之前的文章所述(Javascript作用域),定义在全局的函数,函数的所有者就是当前页面,也就是window对象
    2013-11-11
  • Javascript中call与apply的学习笔记

    Javascript中call与apply的学习笔记

    经常看到这俩哥们,看来看去都是讲他们的区别,一直没搞太清楚作用究竟是什么,现在记录下自己理解,有错的话希望指出!
    2014-09-09
  • 分享一个插件实现水珠自动下落效果

    分享一个插件实现水珠自动下落效果

    本篇文章给大家分享一个插件制作水珠自动下落效果,效果非常逼真,感兴趣的朋友可以添加下面代码运行看看效果哦
    2016-06-06

最新评论