【发布时间】:2015-12-12 01:59:26
【问题描述】:
在我的项目中,我需要记下客户的信用卡号码,以备将来付款之用,并将其存储起来。
当传递给将要存储数据的控制器操作时,如何确保在 MVC 视图中输入的数据的安全性?
我知道 SSL 是一项基本要求,但有没有我应该特别使用的方法?
请注意,我无法使用任何第三方处理器或任何其他方法。我有安全的卡片存储方法,因为我们正在从桌面应用程序过渡,但是我关心数据输入和控制器操作之间的安全性。
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-group">
@Html.LabelFor(p => newPayment.cardnumber, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(p => newPayment.cardnumber, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(p => newPayment.cardnumber, "", new { @class = "text-danger" })
</div>
</div>
}
【问题讨论】:
-
请注意,与使用的技术无关,并且取决于外部业务/法律因素,您可能还需要检查 PCI 合规性,特别是如果您将卡号保留在某种持久性存储中。
-
除非您真的需要,否则我会避免存储信用卡数据。
-
这是一个广泛而复杂的主题,但正如旁注一样,SSL 会在传输过程中加密数据,它并不能帮助您将数据安全地存储在数据库中。如果您还没有,请查看Troy Hunt's blog。
-
如果您存储这种性质的重要信息,我还建议对这些存储值使用某种加扰算法或加密。如果您以纯文本形式存储,没有人会希望他们的信息受到损害
-
PayPal 和 Authorize.Net 让您可以安全地存储客户的信用卡信息。如果你想为卡充值,只需使用 ID(或令牌)即可。想想两个词 - HomeDepot 和 Target。
标签: c# asp.net-mvc security credit-card