Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 浏览器扩展能否记录用户输入?_Javascript_Html_Security_Encryption_Google Chrome Extension - Fatal编程技术网

Javascript 浏览器扩展能否记录用户输入?

Javascript 浏览器扩展能否记录用户输入?,javascript,html,security,encryption,google-chrome-extension,Javascript,Html,Security,Encryption,Google Chrome Extension,我正在开发一个应用程序,它可以在localStorage中加密和存储敏感用户数据。加密/解密密码未保存在任何位置。因此,如果用户丢失了密码,就无法解密数据。 据我所知,浏览器扩展可以访问任何页面上的localStorage,并可以侦听页面上任何元素的事件(input)。这就是问题所在,因为恶意扩展可以记录用户密码,从localStorage获取加密数据,并使用密码对其进行解密 我的问题是: 有没有办法禁用网页的扩展 是否有方法阻止扩展访问页面上的localStorage 有没有其他更安全的方法来

我正在开发一个应用程序,它可以在
localStorage
中加密和存储敏感用户数据。加密/解密密码未保存在任何位置。因此,如果用户丢失了密码,就无法解密数据。 据我所知,浏览器扩展可以访问任何页面上的
localStorage
,并可以侦听页面上任何元素的事件(
input
)。这就是问题所在,因为恶意扩展可以记录用户密码,从
localStorage
获取加密数据,并使用密码对其进行解密

我的问题是:

  • 有没有办法禁用网页的扩展
  • 是否有方法阻止扩展访问页面上的
    localStorage
  • 有没有其他更安全的方法来实现我的目标
  • 没有
  • 如果用户允许扩展访问,则不允许
  • 可能,见下文
  • 我认为这种方法存在多个问题

    正如@wOxxOm所指出的,客户端内容完全由浏览器控制(在本例中),浏览器设置由最终用户(或应用于客户端计算机的策略)控制。你可以考虑做的一件事是让你的应用程序在私有/匿名模式下运行,因为默认情况下会禁用扩展,但即使这样,用户也可以在匿名模式下允许扩展,而且由于下面描述的原因,这也不会有多大帮助(除此之外,您无法可靠地检测用户是否在使用私有/隐姓埋名模式,因此无论如何,这只能是一个简单的推荐)

    @MaartenBodewes也评论了我的第二点。选择扩展(并授予它们特权)是用户的责任。如果用户非常信任某个扩展,以至于将其添加到浏览器中,这最终是他的风险。您可以对此提出警告,但这一决定始终应由用户做出

    我最重要的一点是,这不会有任何帮助。如前所述,Javascript中的加密技术过去是没有希望的。如果你针对的是旧浏览器,这真的是一个坏主意。新浏览器带来了重大改进(见公认的答案),内容安全策略和新的加密API都很好(尽管跨浏览器和版本的支持不是很好)

    但是,你的应用程序中总有一些缺陷会破坏所有的安全措施。一个跨站点脚本的实例将使你无法抵御这些威胁。如果你非常担心安全问题,以至于你希望你的用户不要使用他们认为可以使用的扩展,那么你也应该同样担心类似的风险

    因此,简而言之,我认为如果恶意浏览器扩展是您的威胁模型中的一个主要威胁,那么不幸的是,web可能不是您应用程序的良好平台。另一方面,编写类似于本机应用程序的内容有其自身的威胁,与web应用程序非常不同,因此决定权在您。无论您做什么,都会有你将不得不以某种方式接受或转移剩余风险

  • 没有
  • 如果用户允许扩展访问,则不允许
  • 可能,见下文
  • 我认为这种方法存在多个问题

    正如@wOxxOm所指出的,客户端事务完全由浏览器控制(在本例中),浏览器设置由最终用户(或应用于客户端计算机的策略)控制。你可以考虑的一件事是让你的应用程序在私有/匿名模式下运行,因为默认情况下会禁用扩展,但即使这样,用户也可以允许在匿名模式下进行扩展,而且由于下面描述的原因,这也不会有多大帮助(除此之外,您无法可靠地检测用户是否在使用私有/隐姓埋名模式,因此无论如何,这只能是一个简单的推荐)

    @MaartenBodewes也评论了我的第二点。选择扩展(并授予它们特权)是用户的责任。如果用户非常信任某个扩展,以至于将其添加到浏览器中,这最终是他的风险。您可以对此提出警告,但这一决定始终应由用户做出

    我最重要的一点是,这不会有任何帮助。如前所述,Javascript中的加密技术过去是没有希望的。如果你针对的是旧浏览器,这真的是一个坏主意。新浏览器带来了重大改进(见公认的答案),内容安全策略和新的加密API都很好(尽管跨浏览器和版本的支持不是很好)

    但是,你的应用程序中总有一些缺陷会破坏所有的安全措施。一个跨站点脚本的实例将使你无法抵御这些威胁。如果你非常担心安全问题,以至于你希望你的用户不要使用他们认为可以使用的扩展,那么你也应该同样担心类似的风险


    因此,简而言之,我认为如果恶意浏览器扩展是您的威胁模型中的一个主要威胁,那么不幸的是,web可能不是您应用程序的良好平台。另一方面,编写类似于本机应用程序的内容有其自身的威胁,与web应用程序非常不同,因此决定权在您。无论您做什么,都会有您必须以某种方式接受或转移的风险始终存在。

    网页和客户端Web应用程序是无防御的,但您可以自己编写扩展,并在其中执行所有敏感操作。最终,您可能不想对用户决定下载和运行的扩展承担全部责任。您可以随时推荐不安装扩展,在运行应用程序时禁用扩展,或者实际上使用不带扩展的单独安装。网页和客户端Web应用程序是无防御的,但您可以自己编写扩展并在其中执行所有敏感操作。最终,您可能不想对用户选择的扩展承担全部责任下线