我正在开发需要非常高安全性的 Web 应用程序 - 要求之一是您需要密码和第二个因素才能获得访问权限 - 例如。令牌、指纹扫描仪、磁卡等
我的问题是:网络浏览器是否有任何合理的方式可以从读卡器或指纹扫描仪等设备访问数据并在登录过程中发送数据?Java小程序,浏览器插件?还有什么?还是令牌是唯一的选择?
编辑:我发现了一些关于双向证书身份验证的内容,其中客户端和服务器交换他们的证书 - 客户端证书似乎可以用智能卡保护,因此用户必须在登录过程中将其放入读卡器中。也许有人对此了解更多?
我正在开发需要非常高安全性的 Web 应用程序 - 要求之一是您需要密码和第二个因素才能获得访问权限 - 例如。令牌、指纹扫描仪、磁卡等
我的问题是:网络浏览器是否有任何合理的方式可以从读卡器或指纹扫描仪等设备访问数据并在登录过程中发送数据?Java小程序,浏览器插件?还有什么?还是令牌是唯一的选择?
编辑:我发现了一些关于双向证书身份验证的内容,其中客户端和服务器交换他们的证书 - 客户端证书似乎可以用智能卡保护,因此用户必须在登录过程中将其放入读卡器中。也许有人对此了解更多?
我害怕与外部硬件交互,你被困在编写本机浏览器插件或 ActiveX 控件(在 IE 的情况下)。但是,一些磁卡读卡器实际上会像键盘一样工作(即,它们会“键入”从卡中读取的数据,然后是某种控制字符,如 \n) - 所以通过一些 focus() 技巧,你可以想象无需使用纯 JS 即可捕获读者的输入。
对于网络应用程序,我建议使用手机。当用户尝试登录时,他/她会收到一条短信,除了他的密码外,他还必须输入该短信。
有许多服务提供商通过简单的 REST API 以可承受的费用提供发送文本消息。当安全是一个大问题时,额外的成本不应该是一个大问题。
我有几个建议:
希望这些都是任何灵感。
您可能会考虑的一件事是实施类似于暴雪的魔兽世界身份验证器。这是一个 8 位代码,每 60 秒更改一次,并与特定的序列号相关联。您将序列号与用户帐户记录一起存储,并根据该记录和当前时间计算预期代码。这是一个对抗名副其实的高度积极的黑客舰队的系统,所以至少它是相当安全的。
主要好处是您不必直接与硬件交互,用户可以从任何地方进行身份验证。缺点是您没有与检查物理硬件相同的安全感。