我正在开发一个 php/mysql 应用程序,商店端详细说明了一些数据,下一步,我需要将智能卡读卡器与浏览器(Chrome、Firefox、IE)连接,以提取数据并将其保存到 mysql 数据库中。
我找不到任何有用的东西,所以我来这里是为了获得一些信息/帮助。怎么可能做到呢?
我正在开发一个 php/mysql 应用程序,商店端详细说明了一些数据,下一步,我需要将智能卡读卡器与浏览器(Chrome、Firefox、IE)连接,以提取数据并将其保存到 mysql 数据库中。
我找不到任何有用的东西,所以我来这里是为了获得一些信息/帮助。怎么可能做到呢?
唯一可以合理确定的方法是在 Java 中创建一个 Applet,打破沙箱并尝试使用javax.smartcardio
库。由于它在 中javax
,不确定它是否存在,您可能会触发一些额外的访问规则。
Applet 应该被签名并且用户应该表明 Applet 是可信的。当然,计算机上应该安装一个相对较新的 Java 运行时。javax.smartcardio
默认情况下只能使用 PCSC 智能卡读卡器,因此您必须确保有一个。此外,PCSC 和javax.smartcardio
确实假定符合 ISO 7816 的处理器卡。
早些时候,您有时可以使用 Java 小程序安装本机库来与智能卡通信,但对于当前的操作系统,我绝对不相信这会起作用。
为大量工作和大量测试做好准备。
更新2016-12-24
Applet 即将淘汰——它们所依赖的插件在 Java 9 中已弃用,但尚未删除。这不是直接的答案,但使用Java Web Start可能是解决此问题的方法。
关于浏览器中的密码学有很多想法,例如 Web Crypto API。关于直接智能卡访问,它当然似乎仍在思考而不是行动。在撰写本文时,似乎不包括对安全令牌的访问。
一个常见但有些棘手的方法是为浏览器提供智能卡插件。然而,这需要浏览器支持(对于每个单独的浏览器)、管理员权限。许多浏览器试图从诸如此类的插件结构中迁移出来,因此这种解决方案可能不会成为未来的证明。
最后,您可以使用(签名的)本机应用程序并从浏览器中引用它。该应用程序可以在应用程序中提供。各种操作系统的商店。
您很可能必须开发本机应用程序,该应用程序将按需安装到浏览器并完全信任地执行以访问计算机设备,例如阅读器或至少证书存储或系统 API。
然后,您将为浏览器提供脚本接口,例如用于 IE 的NPAPI或 ActiveX/COM 或其他专有脚本技术。