B/S下的IC卡的读写需要使用ActiveX来辅助完成,ActiveX是下载到每个客户端执行的,任何个用户都可以得到该ActiveX。如果对IC卡在安全性方面要求很高,在加密数据或密码的过程中很难做到完美,原因是客户端的ActiveX需要配合脚本如js或vbs来完成,而客户端脚本通常都是透明的,目前尚未找到特别安全的基于B/S的解决方案。
有两种办法,
第一种
流程如下:
1.用户的浏览器发出浏览登陆网页的请求。
2.服务器生成一个长的随机串A,并纪录A,把这个串写在网页中的activex的参数里。
3.浏览器收到该页面, 显示,并创建 activex 实例, acrivex 实例将此字串发给刷卡机, IC卡用其内部的算法(复杂的如私钥加密)对A加密,返回串 B 到 activex实例。
4.网页提交时, 将 activex实例 中的B读出, post给 服务器。
5.服务器收到B后, 使用相应的算法(复杂的如公钥解密)算出 xA, 比较 A?=xA, 就知道使不是合法登陆了。
第二种方法, 利用 M$的用户验证方法。
客户机先利用IC卡登陆本地系统(M$有此项接口), 之后,利用M$身份认证机制,让 服务器检查,是不是指定的用户。
个人认为,你用第一种会更好点。