如何强制让用户输入所有字符以进行识别(目前被自动完成击败)

Posted

技术标签:

【中文标题】如何强制让用户输入所有字符以进行识别(目前被自动完成击败)【英文标题】:How to enforce making users type in all characters for identification (currently defeated by autocomplete) 【发布时间】:2016-02-15 10:18:00 【问题描述】:

这是我所处的情况。我继承了一个 ASP.NET Web 应用程序,我们公司的成员使用它来输入他们公司汽车的里程数。当他们登录时,首先会要求输入他们汽车的 VIN。

管理应用程序的经理坚持他们必须每次都正确输入整个 VIN。显然这是因为他们偶尔会交换车辆,然后不告诉舰队部门。存在责任问题。

我们告诉他这不切实际,因为没有人可能每次都通过查看物理 VIN 来输入它;他们会将号码存储在文件中并剪切和粘贴。所以他希望我们为此创建一个小型移动应用程序;使用移动应用进行剪切和粘贴要困难得多。

然后我们告诉他关于自动完成的事情。他不是一个快乐的露营者。

有什么方法可以阻止自动完成功能的工作?如果他们不知道并且恰好在他们的浏览器中关闭它,问题就解决了,但我认为没有任何方法可以强制它关闭,是吗?还有其他人曾经解决过这类问题吗?

【问题讨论】:

并非如此。如果用户对他们的浏览器有任何控制权,他们可以将其设置为做他们想做的任何事情。他们还可以随时复制/粘贴值。您的主管正在尝试使用技术来解决非技术问题。他的方法存在根本缺陷。 其实我对车辆的 VIN 号也有同样的问题。以下是一些规则: 1. 17 位数字。 2.会取出I,O,Q(任何带有IOQ的vin都是无效的) 3.VINen.wikibooks.org/wiki/…有校验和数字你可以用这个在客户端或服务器端做。 这个***.com/a/10538789/5104101 可能有助于自动填充和***.com/a/5511446/5104101 用于粘贴 @David,我同意以非技术方式解决这个问题会更好,但技术是我们拥有的唯一工具。大多数用户的薪酬等级都比我高几个,甚至达到公司的高层管理人员。我们不能让他们做任何事。我们所能做的就是尝试创造一种情况,让作弊比玩得好。或者设置小捕鼠器来捕捉他们的作弊行为,这样系统管理员就可以收到可能的“情况”的警报。 【参考方案1】:

有一种半非标准的方法,但它通常用于防止自动完成。我将它用于用户必须输入信用卡或帐号等的支付页面,以帮助防止它存储它。

https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion

具体来说,在这种情况下,您可以只将其应用于 VIN 字段,其余部分保留

如果您使用网络表单,这里的autocomplete="off" 将传递到浏览器

<asp:TextBox ID="tbVIN" runat="server" autocomplete="off"></asp:TextBox>

或者如果您正在以某种方式处理直接 html

<input type="text" id="vin" name="vin" autocomplete="off">

来自该站点的 sn-p

在这里设置 autocomplete="off" 有两个效果:

它会停止浏览器保存字段数据,以便以后在类似表单上自动完成,但启发式方法因浏览器而异。 它停止浏览器在会话历史记录中缓存表单数据。当表单数据缓存在会话历史中时,用户填写的信息 在用户提交表单并单击后,in 将可见 点击“返回”按钮返回原始表单页面。

这适用于浏览器,包括旧的浏览器,但在某些情况下它不会。一些浏览器会覆盖这一点,但通常仅适用于浏览器使用内置密码管理器的登录字段。

【讨论】:

以上是关于如何强制让用户输入所有字符以进行识别(目前被自动完成击败)的主要内容,如果未能解决你的问题,请参考以下文章

excel中如何让文字自动换行?

如何强制仅打开设备摄像头以进行视频捕获意图?

如何识别图片验证码?

完整版的密码爆破,自动识别验证码,Python福利!

验证码

如何让www网址自动识别电脑、平板、手机,然后进行相应跳转?