可以使用 JavaScript 来捕获用户的屏幕吗?

信息安全 javascript
2021-08-19 09:31:31

可以使用 JavaScript 来捕获用户的屏幕吗?如果是这样,这个功能在任何 JS 框架中都可用吗?

(我不需要代码示例:我主要是要求对 JavaScript 的安全功能形成意见。)

3个回答

JavaScript 可以完全访问文档对象模型,因此至少在理论上,它可以捕获自己网页上的内容(但不能捕获浏览器窗口之外的任何内容),并且有一个库可以做到这一点:http://html2canvas.hertzen。 com/ (我没试过。)

同源策略阻止 JavaScript 访问另一个站点的DOM。由于 JavaScript 无法访问其他站点的 DOM,因此它无法从其他站点泄漏材料。因此,如果您的问题归结为在一个选项卡甚至 iframe 中运行的脚本是否可以从浏览器的其他位置捕获银行密码,那么不,只要在浏览器本身中正确实现了同源。

相同的来源适用于提供页面的域,而不是提供脚本的域。所以,我在 hxxp://bbbrown.spsu.edu/ 的页面(它并不有趣,现在它已经死了,因为我已经退休了)可以从 google-analytics.com 加载一个脚本,就像它一样,那个脚本可以访问加载它的页面的 DOM;它还可以通过一些技巧将内容发送回谷歌。关键是,它之所以能做到这一点,只是因为我足够信任 Google Analytics 可以在我的页面中加载他们的脚本;加载页面的代码在我写的标记中。如果您将我的页面加载到浏览器中,来自 google-analytics.com 的脚本只能在您的浏览器中看到我的页面的 DOM,而看不到您在浏览器中可能打开的任何其他内容。

除了使用 Javascript 捕获屏幕之外,常见的事情是跟踪用户在网页上的鼠标移动/动作。StackOverflow 上的上一个问题展示了如何在 Javascript 和 jQuery 中捕获鼠标的位置。有了这些信息,人们可以获取这些鼠标位置并将它们映射到网页的屏幕截图(使用另一种方法创建)。一些常见的工具,如 Lucky Orange 和 Crazy Egg 创建网页的热图,以便网站管理员可以看到人们在网站上所做的事情。

由于这个问题与安全有关,因此能够在网页上看到鼠标移动存在一些安全问题。黑客可能会将此信息用于或作为网络钓鱼攻击的一部分。但我认为这不是一个真正的问题。

getUserMedia(); 可以捕获整个桌面。

此功能是实验性的,因此您需要指导用户启用它。