【问题标题】:How to prevent a user from getting password field value in console如何防止用户在控制台中获取密码字段值
【发布时间】:2012-08-14 07:34:38
【问题描述】:

我一直在帮助一些人使用他们的电脑并修理它们。其中一个人问我在自动表单字段中存储密码的安全性。我向他们展示了如何从控制台中的简单 jQuery 调用中检索密码的快速技巧。在一些网站上工作时,我一直在试图找出一种方法来阻止使用这个技巧来找出保存的密码是什么。

如果您不知道,要了解我在说什么,请尝试以下操作。

  1. 使用 jquery(或 jquerify 网站)导航到一个网站,然后打开自动填写表单或填写密码字段。
  2. 检查元素以显示密码 id 字段或使用 jquery 调用该字段的某种方式
  3. 在控制台中运行$('#password').val() 之类的内容,然后查看密码显示。

我想知道作为一名网络开发人员是否有某种方法可以防止在我的网站上使用它,但仍然允许使用它来获取网站代码中的字段值。

谢谢。

编辑

从 facebook 自动填写登录信息(出于安全考虑,已涂黑)

然后在 jquerifying 页面并在控制台中运行 $jq('#pass').val() 而不更改任何内容后(密码为安全起见)

用例

用户 1 在公共计算机上,他们允许浏览器保存登录信息

用户 1 离开,用户 2 去同一个站点。浏览器自动填写登录信息

用户 2 运行命令并获得密码的访问权限

【问题讨论】:

  • 这只会显示您刚刚输入的密码,因为它在客户端,并且您可能知道您刚刚在框中输入了什么,这并不是真正的安全风险?您无法真正看到其他人在其他计算机上做了什么,但您当然可以看到其他人在自动填充设置中的内容,但这不是您的问题,因为保护他们的私人计算机取决于用户,而不是您.
  • 哦,但有点……如果您使用的是共享计算机(这是我的网站通常使用的地方),我想在我的网站上有一些脚本可以防止这从发生。如果您有前一个用户自动填写的密码字段,下一个用户可以使用此技巧找出密码
  • 它只会显示当前浏览器会话输入字段(密码)的值
  • 除非您可以控制您的用户,否则您无法阻止他们这样做。
  • 您可以使用表单元素上的自动完成属性来关闭自动填充。 (这里有一些细节:stackoverflow.com/questions/582244/…)虽然听起来你的里程在旧浏览器上可能会有所不同。

标签: jquery security console


【解决方案1】:

简短的回答:不。从逻辑上讲,没有办法删除访问该字段中的数据的能力保留自动填充的功能。密码框的值就是的密码,这就是你要提交的。您要么必须禁用自动填充以正确阻止这种情况发生。

不过……

您可以隐藏该值,方法是从您的password 输入框中取出值并用.val("") 将其置空。然后提交存储值的变量而不是提交时框中的内容。如果您使用许多混淆变量名称的工具之一来缩小您的脚本,那么找到该值会稍微困难一些(尽管当然并非不可能)。通过加密和解密值,您可能会变得越来越疯狂,但最终所有获取密码的密钥必须在脚本中以便脚本本身可以在适当的时间访问它。你会阻止少数人尝试过,但不是专门的人。

您还必须牢记以下所有注意事项:

  • 您必须确保仅提交您的密码变量如果用户不更改它的内容。如果用户更新了密码框中的信息,您需要提交该信息。使用像 knockout.js 这样的工具,您可能能够不断获取和隐藏用户在该框中输入的任何内容,但这将是另一层复杂性

  • 您希望用户清楚地知道发生了什么。如果他们的密码框突然空白,大多数用户会很困惑。

让我们现实一点。如果“黑客”可以直接访问某人的计算机,并且他们想要密码,他们就会得到它。在使用您的 javascript 之前,他们有一千种其他方法可以首先获取密码(键盘记录器,在他们键入时站在他们身后,如果您不使用 HTTPS 或加密数据,则使用数据包嗅探器,用钝物敲击它们等。 ) 在某处有一个关于这个的 XKCD 片段。编辑:Found it :)

【讨论】:

    【解决方案2】:

    您可以简单地禁用自动完成,这样密码就不会存储在输入字段中。

    输入类型=“密码”自动完成=“关闭”

    【讨论】:

      猜你喜欢
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 2015-01-30
      • 1970-01-01
      • 2021-03-18
      • 2011-10-16
      相关资源
      最近更新 更多