拥有信用卡模型是不是安全?

Posted

技术标签:

【中文标题】拥有信用卡模型是不是安全?【英文标题】:Is it safe to have a credit card model?拥有信用卡模型是否安全? 【发布时间】:2014-03-29 14:50:54 【问题描述】:

我们现在正在我们的 .net MVC 应用上构建支付选项。到目前为止,我们已经成功地将 paymant 与 Paypal 选项相关联,但现在我们正处于引入和测试信用卡选项的阶段。

所以我们想知道托管和使用信用卡信息是否安全(即使是暂时的)?

我正在构建一个看起来像这样的视图模型:

public class CreditCardViewModel

    public int CardNumber  get; set; 

    public int ExpireMonth  get; set; 

    public int ExpireYear  get; set; 

    public string FirstName  get; set; 

    public string LastName  get; set; 

将在获取视图中生成一个新的,然后回传,一旦信息验证,使用PayPal Integration,我们计划采用付款方式。但我想保护用户免受垃圾邮件、黑客攻击或被盗,因此想知道这是否是一种安全/好的方法,或者 *** 社区是否会建议我采取另一条路线......

编辑 我稍微编辑了我的视图模型,它看起来像这样:

public class CreditCardViewModel

    [Required]
    public SecureString CardNumber  get; set; 

    [Required]
    [Range(1, 12, ErrorMessage = "Invalid Month Number")]
    public int ExpireMonth  get; set; 

    [Required]
    public int ExpireYear  get; set; 

    [Required]
    public string FirstName  get; set; 

    [Required]
    public string LastName  get; set; 

如上所述,所使用的数据不会保存在数据库中。将在POST方法中使用一次。

编辑 根据 Juliano 和 Chris Pratt 的精彩解释,我决定从网站上删除该模型并探索不同的途径(主要是探索 Merchant SDK 集成)。但是感谢各位的精彩解释,因为我不知道存在这样的合规性。

【问题讨论】:

你需要所有这些信息。安全问题不会出现在视图模型中 - 但与您的实现和整体网站完整性有关, 不清楚您的要求。如果您的应用程序可以看到卡详细信息,则它属于强制性 PCI/DSS 合规性范围,实施起来非常重要。 您应该注意如何将这些数据保存在数据库中,时刻注意它可能会被盗... 仅供参考 - 您不能将 int 用于 CardNumber。它太小了,拿不动。您可能想尝试实现SecureString 或至少调查一下。 @TyCobb - 另外,信用卡号码可以以“0”开头。 【参考方案1】:

任何接受 Visa 和 MasterCard 的支付应用程序都应符合支付应用程序的全球安全标准 PA-DSS(支付应用程序数据安全标准)。该规范的最新版本是 3.0,可以在PCI site 下载。

在本文档中有一个名为“开发安全支付应用程序”的要求,它讨论了如何根据市场上的最佳实践开发一个安全的支付应用程序。关于您的具体问题,5.1.6.1 说明了如何在内存中处理敏感数据(卡号、密码、安全码):

攻击者使用恶意软件工具从内存中捕获敏感数据。最大限度地减少内存中的 PAN/SAD 的暴露将有助于降低它被恶意用户捕获或在内存文件中不知不觉地保存到磁盘而不受保护的可能性。 此要求旨在确保考虑如何在内存中处理 PAN 和 SAD。 了解敏感数据在内存中存在的时间和时间,以及以何种格式存在,将有助于应用程序供应商识别其应用程序中的潜在不安全性,并确定是否需要额外的保护。 此活动是否产生任何编码技术将取决于正在开发的特定软件和使用的技术。

【讨论】:

这就是为什么我喜欢使用外部 Web API 来完成这项工作,你提出了一个很好的观点。 值得注意的是,就“必须”而言,它适用于您的 PCI-DSS,而不是 PA-DSS;尽管您当然应该将后者用作路线图。 您是否处理该卡或是否由第三方处理都没有关系。如果信用卡号曾经通过您的系统、通过表单提交或其他任何方式,您必须符合 PCI。 @ChrisPratt 只是想确定一下。数据被发送回我的应用程序,但随后我构建了一个CreditCard Paypal 对象,将其发送到 PayPal 并刷新数据。它永远不会以任何方式存储在我的应用程序中。你还会认为这是 IYO 的问题吗? 存不存都无所谓。它通过您的系统,这意味着如果您被入侵,那么信用卡也是如此。看看所有关于信用卡等被盗的头条新闻不是通过实际供应商,而是通过第三方中间人。

以上是关于拥有信用卡模型是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章

在安卓上存储信用卡信息是不是安全?

将信用卡数据从视图发布到控制器是不是安全?

应用程序功能要求保存信用卡详细信息以备将来使用。需要调查是不是存在任何特定的安全设计

为啥使用明文作为信用卡安全码?

如何在 PHP 中的页面之间安全地传递信用卡信息

如何使用 paypal / ruby​​ on rails / 活跃商家创建安全的信用卡网关