如何防止用户在控制台中获取密码字段值

bre*_*rer 3 security console jquery

我一直在帮助一些人使用他们的计算机并修理它们。其中一人问我有关在自动表单字段中存储密码的安全性的问题。我向他们展示了如何通过控制台中的简单 jQuery 调用检索密码的快速技巧。在处理某些网站时,我一直在尝试找出一种方法来防止使用此技巧来找出保存的密码是什么。

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

  1. 使用 jquery 导航到网站(或 jquerify 网站),然后打开自动表单填写功能或填写密码字段。
  2. 检查元素以显示密码 ID 字段或使用 jquery 调用该字段的某种方式
  3. 在控制台中运行类似的命令$('#password').val()并观察密码的显示。

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

谢谢。

编辑

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

在此输入图像描述

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

在此输入图像描述

使用案例

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

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

用户 2 运行命令并获取密码

Nic*_*ick 5

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

然而...

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

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

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

  • 您希望用户清楚发生了什么。如果密码框突然变成空白,大多数用户会感到非常困惑。

让我们现实一点吧。如果“黑客”可以直接访问某人的计算机,并且他们想要密码,他们就会得到它。他们有上千种其他方法可以在攻击你的 JavaScript 之前先获取密码(键盘记录器、在他们打字时站在他们身后、数据包嗅探器(如果你不使用 HTTPS 或加密数据、用钝物攻击它们等)。 )某处有一个关于此的 XKCD 条带。编辑:找到了:)