如何检测人员在客户端的非屏蔽字段中输入 SSN 数据?

Posted

技术标签:

【中文标题】如何检测人员在客户端的非屏蔽字段中输入 SSN 数据?【英文标题】:How to detect person is typing SSN data in non masked field on client side? 【发布时间】:2017-01-17 07:41:24 【问题描述】:

我有一个屏幕共享应用程序,其中屏蔽了所有敏感数据。在某些情况下,客户将敏感数据(例如 SSN)输入到非屏蔽字段中,从而直接影响我们的解决方案。

有没有一种方法可以让我检测到该人正在输入 SSN 或任何敏感数据,而无需在客户端访问数据库(或任何其他服务器端信息)。

例如,考虑一个包含 SSN 和地址字段的表单。如何避免在地址字段中显示错误输入的 SSN?

SSN
Address:888-9999-0988

编辑

到目前为止,我的方法是将所有模式存储在客户端的属性文件中。例如,我的应用程序中的典型密码为 8 个字符,规则如下:

^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]‌​8,$

我将把这个正则表达式存储在客户端。一旦用户开始输入,我将检查他输入的是密码还是用户名。 同样,我可以将电话号码分解为国家/地区代码格式,并且也可以使用正则表达式。 但是由于 SSN 是纯 9 位随机数,所以我被卡住了。

通过从 DOM 中提取字段名称,我可以获得光标的确切位置和用户正在输入数据的字段名称。并且通过使用它们支持的数据格式类型,我可以大致了解用户是否正在输入所需的数据或别的东西。如果我错了,请纠正我

九月: 14-2016 由于我在浏览器中运行屏幕共享解决方案,它将被网站用作可插入组件。因此要求他们重新构建页面并不容易。 以下是我根据您的意见最终确定的方法。 我将有一个文件文件,其中存储了所有模式。 1.信用相关信息都有一定的规律,不会有问题 2.密码也有一些规则或模式。所以这些也可以检查

为了避免数据泄露,我会在用户输入数据之前显示通用消息,例如 watsapp 显示“用户正在输入”。一旦用户选项卡或进入下一个字段,则在内联模式验证后只会显示数据。

这里唯一剩下的就是如何检测那些没有任何模式的字段,如 SSN、电话号码等。希望我们也能有一些解决方案。

问候 哈利

【问题讨论】:

澄清和收紧措辞。 【参考方案1】:

简而言之,你不能。 您如何按值和格式区分敏感数据? 例如,您如何及时区分 SSN 212-73-6500 和纽约市电话号码 212-736-5000 以消除敏感信息?同样,您如何检测到用户在地址字段中输入密码,显示密码的任何字符之前?

您说您无法访问数据库以将输入的数据与已知值进行匹配。除非您可以在输入敏感数据之前对用户做出一些区分,否则您无法在信息论下检测到错误。您无法将密码与名称或其他字母数字输入区分开来。

我看到了一种可能性:在清除显示之前将所有数据视为敏感数据。每个输入字段都会被屏蔽,直到您确认它不能包含敏感信息。

不幸的是,我不知道您可以严格地从客户端执行此操作。同样,您如何区分输入错误的 SSN(遗漏或加倍的数字)和电话号码?如何从密码中分辨字母地址?

我相信,要解决这个问题,您需要对您请求的敏感输入施加一些限制。密码不能看起来像任何其他字段。您在页面上尽可能多地将易混淆的字段分开......其中一些可能会影响输入信息的顺畅流动。


编辑回复

没错:您可以设置一系列识别规则并区分各种类型的输入。但是,您仍然存在一些先天问题,因为您无法区分某些类型的输入,直到为时已晚,例如上面的电话或 SSN 歧义,或者从姓名或地址告诉密码 (有些地址以纯字母字符开头)。

您能否通过严格的分区来满足安全要求?例如,将所有的敏感信息放在一个页面上,将所有显示的信息放在另一个页面上。我正在寻找一种方法来强制用户知道某些信息是敏感信息。

另外,您是否必须将此配置为国际使用?安全要求因文化和国家而异。设计此应用程序时请牢记这一点。

【讨论】:

我现在的方法是将所有模式存储在客户端的属性文件中。例如,我的应用程序中的典型密码是 8 个字符,具有以下规则:“^(?=.*[A -Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&] 8,$" 所以我会将这个正则表达式存储在客户端,一旦用户开始输入,我会检查他是否输入密码或用户名。同样,我可以打破国家区号格式的电话号码,也可以使用正则表达式。但由于 SSN 是纯 9 位随机数,我被卡住了。 通过从 DOM 中提取归档名称,我可以获得用户正在输入数据的光标和字段名称的确切位置。通过使用它们支持的数据格式类型,我可以大致了解用户是否正在输入所需的数据或其他东西。如果我错了,请纠正我 我将这些编辑为您的原始问题;其他路过的人可以更轻松地找到相关信息。 由于我在浏览器中运行屏幕共享解决方案,它将被网站用作可插入组件。因此要求他们重新构建页面并不容易。以下是我根据您的意见最终确定的方法。我将有一个文件文件,其中存储了所有模式。 1.信用相关信息都有一定的规律,不会有问题 2.密码也有规律或规律,这些也可以查。 为了避免数据暴露,我会在用户输入数据之前显示通用消息,就像 watsapp 显示“用户正在输入”一样。一旦用户选项卡或进入下一个字段,则在内联模式验证后只会显示数据.剩下的就是如何检测那些没有任何模式的字段,如 SSN、电话号码等。希望我们也能有一些解决方案。

以上是关于如何检测人员在客户端的非屏蔽字段中输入 SSN 数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在输入字段中检测非“GSM 7 位字母”字符

如何在 Rails 控制台中根据列格式过滤模型

TEXT 列中的数据屏蔽

如何检测客户端的时区?

微信屏蔽网址解决办法 如何恢复微信访问拦截 微信网页拦截怎么办

如何检测文本字段中是不是包含文本而不是数值?