我需要使用在ASP.NET MVC应用程序中刷过的实体卡进行信用卡付款。
最简单的方法可能是进行简单的“键盘 - 楔形”滑动(现在是USB),这样轨道数据就会作为键盘输入发送到密码类型的输入字段。
我对此方法存在一些安全问题:
我有一些可能更好选择的想法,但我不确定它们是否可行:
我正在寻找一些关于良好方法(可靠和安全)的反馈和想法来实现这一目标(我还计划联系一些支付处理器,看看我能从中找到什么)。
感谢。
答案 0 :(得分:2)
您的担忧是有效的,因为磁条实际上已经过时了。在美国,它很常见,但在其他国家,信用卡使用智能芯片,该芯片提供增强的安全性,防止克隆磁卡。
但是有些PCI-DSS兼容的磁卡读卡器将使用3DES加密数据,并且还提供设备/主机验证。此设备允许您绕过嗅探,使用HID模式而不是键盘模拟,这样可以直接与设备通信。
当通过Reader刷卡时,轨道数据将是使用DUKPT(每个事务的衍生唯一密钥)密钥管理加密的TDEA(三重数据加密算法,又称三重DES)。这种密钥管理方法使用基本派生密钥来加密生成初始加密密钥的密钥序列号,该密钥在部署之前注入到Reader中。在每次事务之后,根据DUKPT算法修改加密密钥,以便每个事务使用唯一密钥。因此,每个事务都会使用不同的加密密钥对数据进行加密。
我真正喜欢的其他选择是连接到音频插孔上的SmartPhones的替代品。就像Square设备一样,您肯定已经看过或听过。它们具有与TDAE和DUKPT相同的原理,但将数据调制为由App解调的声音。
如果您计划接受信用卡作为"卡片存在",则需要执行此安全步骤。如果你没有"卡不存在"您可以捕获跟踪数据并将其发送给支付网关进行审批。支付网关将不知道该卡是否真的存在或您是否手动输入信息。如果你想拥有" Card Present"支付网关要求您使用PCI认证设备。
关于ASP.NET MVC,这是不可能的,这必须是客户端应用程序或软件才能进行端到端加密。
答案 1 :(得分:0)
我已经联系了多个支付网关和信用卡刷卡公司,这是一种在ASP.NET应用中使用信用卡刷卡实现端到端加密的相当简单的方法:
1)使用像IDTech IDRS系列滑动一样的滑动(键盘楔型 - 不是HID):http://www.idtechproducts.com/download/swipe-readers/doc_download/166-user-manual.html
2)发送滑动处理器/网关,他们将加密密钥注入设备。
3)正确配置滑动后,它会发送强加密的滑动数据作为键盘输入,然后您可以从客户端javascript传递到服务器,服务器又将其发送到支付网关,解密并处理数据。滑动还将发送未加密的某些数据部分(例如卡号的第一个和最后4个数字)。