为什么某些 Web 应用程序会禁用 Numpad 输入?

信息安全 Web应用程序 验证 电子商务
2021-08-30 12:36:32

一些 Web 应用程序(一个流行的例子是 Skrill)不允许从 Numpad 输入 number <input>

我在这里看到一些本地网站也遵循相同的程序。问题是,它们都在某种程度上与电子商务有关,这引起了我的好奇心。

这样的事情有什么影响?

PS小键盘我指的是 PC/笔记本电脑键盘的这一部分: 在此处输入图像描述

3个回答

这个答案只是推测性的,但在我做了一些挖掘之后,这对我来说是最可能的解决方案。

编码人员希望禁止在 Web 表单的某些字段中输入数值。为此,他们使用了类似这里的 keyCode 值。键盘上的每个键都有一个特定的代码,因此它的输入可以用一个 ID 来识别。小键盘和数字键 - 尽管提供相同的输入(数字) - 具有不同的 keyCodes。

数字键的 keyCode 值为 0 - 9,数字键盘的值为 96 - 105。

为使无法通过键盘输入数值,禁止输入所有键码值为 0 - 996 - 105 的键,从而禁用小键盘。

我有一个基于@TomK 答案的推测性答案。

IMO 这不是安全实践/剧院,而是软件中的错误,即开发人员未能实现其预期行为。

正如 TomK 所说,每把钥匙都有一个密码。Skrill 的开发人员希望您在某个字段中只输入数字。如果您熟悉 HTML、Angular、jQuery 等,您就会知道有很多方法可以将输入限制为数值。通过“数字”,重要的是,我并不一定意味着该值是一个数字,而是它可能是一个数字组成的字符串(例如邮政编码 00144 不是144;一个数字可能是 114.3 这不是一个邮政编码,等等.)。

因此,虽然有很多合理且有信誉的方法可以将输入限制为数字,但可能开发人员强迫 Javascript 拒绝所有不是的[0-9],但失败了,因为他们正在查看键的 ID,而不是用户输入的值.

在 Angularjs 中,你会做

<input ng-pattern="^[0-9]+$">

它接受来自数字行和键盘的笔划。

我不知道您是否使用了禁用某些网站上的 Number Lock 的互联网安全软件或杀毒软件。我已经阅读了许多来自软件公司的帖子,这些帖子都解决了这些问题。他们的推理主要是出于对键盘记录的关注。我个人从未遇到过此类问题,因此有关该问题的任何进一步细节都会有所帮助。我发现 Number Lock 存在的唯一问题是,如果您需要使用两次按键来打开或关闭它,或者它是否已在操作系统设置或 BIOS 设置中被禁用。