首页 文章

使用ASP.NET MVC进行信用卡付款(存在卡片,刷卡)

提问于
浏览
2

我需要使用在ASP.NET MVC应用程序中刷过的实体卡进行信用卡付款 .

最简单的方法可能是进行简单的“键盘 - 楔形”滑动(现在是USB),以便将轨道数据作为键盘输入发送到密码类型的输入字段 .

不过,我对此方法存在一些安全问题:

  • 如果在光标位于错误的字段时刷卡,则会以明文显示完整的跟踪数据 .

  • 没有端到端加密(=卡数据以明文形式存储在内存/浏览器缓存中),并且可以被键盘嗅探器抓取 .

  • 必须将完整的跟踪数据发送到服务器,然后将其发送到任何支付网关 . 当然,在两种情况下都通过SSL,但这会将Web服务器添加到攻击面 . 与来自客户端的支付处理器直接交互将避免这种情况(如果可行的话),因此只有被屏蔽的卡#授权号或令牌等必须转到服务器 .

我有一些可能更好的选择的想法,但我不确定它们是否可行:

  • 一个独立的信用卡设备,直接与支付处理器对话,并通过ASP.NET应用程序以某种方式与PC集成 . 也许是一个信用卡设备,它可以监听ASP.NET应用程序可以通过它与客户端进行通信的TCP端口 . 或通过USB连接并通过浏览器插件或类似方式进行交互 .

  • 一个小的iframe或类似的直接使用支付处理器的"payment widget"

  • 使用USB刷卡(尽管可以嗅探)一些客户端库直接与支付处理器交互 .

我正在寻找一些关于良好方法(可靠和安全)的反馈和想法来实现这一点(我计划也联系一些支付处理器,看看我能从中找到什么) .

谢谢 .

2 回答

  • 2

    您的担忧是有效的,因为磁条实际上已经过时了 . 在美国,它很常见,但在其他国家,信用卡使用智能芯片,该芯片提供增强的安全性,防止克隆磁卡 .

    但是有些PCI-DSS兼容的磁卡读卡器将使用3DES加密数据,并且还提供设备/主机验证 . 此设备允许您绕过嗅探,使用HID模式而不是键盘模拟,这允许与设备直接通信 .

    当通过Reader刷卡时,轨道数据将是使用DUKPT(每个事务的衍生唯一密钥)密钥管理加密的TDEA(三重数据加密算法,又称三重DES) . 这种密钥管理方法使用基本派生密钥来加密生成初始加密密钥的密钥序列号,该密钥在部署之前注入到Reader中 . 在每次事务之后,根据DUKPT算法修改加密密钥,以便每个事务使用唯一密钥 . 因此,对于每个事务,将使用不同的加密密钥对数据进行加密 .

    我真正喜欢的另一种选择是连接到音频插孔上的SmartPhones的替代品 . 就像Square设备一样,您肯定已经看过或听过 . 它们具有与TDAE和DUKPT相同的原理,但将数据调制为由App解调的声音 .

    如果您计划接受信用卡作为“卡存在”,则需要执行此安全步骤 . 如果你没有“卡不存在”,你可以捕获跟踪数据并将其发送给支付网关进行审批 . 支付网关将不知道该卡是否真的存在或您是否手动输入信息 . 如果您想拥有“卡存在”功能,支付网关将要求您使用PCI认证设备 .

    关于ASP.NET MVC,这是不可能的,这必须是客户端应用程序或软件才能进行端到端加密 .

  • 0

    我已经联系了几个支付网关和信用卡刷卡公司,这是在ASP.NET应用程序中使用信用卡刷卡完成端到端加密的一种相当简单的方法:

    1)使用像IDTech IDRS系列滑动一样的滑动(键盘楔型 - 不是HID):http://www.idtechproducts.com/download/swipe-readers/doc_download/166-user-manual.html

    2)将刷卡发送到处理器/网关,处理器/网关将加密密钥注入设备 .

    3)正确配置滑动后,它会发送作为键盘输入强加密的滑动数据,然后您可以从客户端javascript传递到服务器,服务器又将其发送到支付网关,后者解密并处理数据 . 滑动也会发送一些部分未加密的数据(例如卡号的第一个和最后4个数字) .

相关问题