我有一个屏幕共享应用程序,其中所有敏感数据都被屏蔽。在某些情况下,客户将敏感数据(如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.Passwords也有一些规则或模式。所以这些也可以检查
为避免数据泄露,我将显示通用消息,直到用户输入数据,如watsapp显示“用户正在键入”。一旦用户选项卡或进入下一个字段,则只有数据将在内联模式验证后显示。
这里唯一剩下的就是如何检测SSN,电话号码等没有任何模式的字段。希望我们也可以有一些解决方案。
此致 哈利
答案 0 :(得分:2)
您说您无法访问数据库以匹配已知值的已输入数据。除非您在输入敏感数据之前能够对用户进行区分,否则您无法在信息理论下检测到错误。您无法区分密码与名称或其他字母数字输入。
我看到一种可能性:将所有数据视为敏感数据,直到清除显示为止。每个输入字段都会被屏蔽,直到您验证无法包含敏感信息为止。
不幸的是,我不知道您可以从客户端严格执行此操作。同样,您如何区分错误输入的SSN(遗漏或加倍数字)与电话号码?你怎么能用密码告诉字母地址?
我相信,要解决此问题,您需要对您请求的敏感输入施加一些限制。密码看起来不像任何其他字段。您可以在页面上尽可能多地分离可混淆字段......其中一些可能会因输入信息的顺畅流动而出现问题。
编辑回复
这是正确的:您可以设置一系列识别规则并区分各种类型的输入。但是,您仍然存在一些与生俱来的问题,因为无法区分某些类型的输入,直到它为时已晚,例如上面的电话或SSN歧义,或者从名称或地址告知密码(一些地址以纯字母字符开头。)
您是否可以通过严格的分区来满足安全要求?例如,将所有的敏感信息放在一个页面上,将所有显示的信息放在另一个页面上。我正在寻找一种方法来强迫用户知道某些信息是敏感的。
另外,您是否必须将其配置为国际使用?不同文化和国家的安全要求不同。在设计此应用程序时请记住这一点。