【发布时间】: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,我们计划采用付款方式。但我想保护用户免受垃圾邮件、黑客攻击或被盗,因此想知道这是否是一种安全/好的方法,或者 StackOverflow 社区是否会建议我采取另一条路线......
编辑 我稍微编辑了我的视图模型,它看起来像这样:
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”开头。
标签: c# asp.net-mvc paypal credit-card