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