掩盖SQL Server中的信用卡号

时间:2011-09-06 18:28:34

标签: .net regex sql-server-2005 credit-card mask

我的数据库中有一个存储信用卡号的列。将它保存在数据库中大约两周后,我希望能够运行查询来更新所有信用卡条目并屏蔽它们 - 仅显示最后四位数字。到目前为止,我找不到办法解决这个问题是不成功的 - 如果信用卡号码的长度不一样怎么办?如果我能掩盖前12位数字会更好,除非它以3开头,然后只掩盖前11位。

2 个答案:

答案 0 :(得分:7)

您必须立即重组您对付款(信用卡)数据的处理。否则,您的公司可能会失去处理支付卡的能力,然后您可能会被解雇。如果这些纯文本数字被未经授权的来源泄露......

首先,您需要加密支付卡名称,号码和到期日期。然后,您将需要进行数据库备份,将其放在磁带上,并将其置于异地。然后,清除所有现有的数据库备份,因为它们包含纯文本信用卡号 - 根据Payment Card Industry,这是一个很大的禁忌。

最安全的做法是将四个最右边的数字存储在表格中的另一个加密列中。然后,您只需选择此字段,并在客户端解密(请记住,您必须确保支付卡号码在“通过线路”[a.k.a.您的LAN或WAN或Internet连接])时进行加密。将数字显示为“以####结尾的帐户”或类似内容。

答案 1 :(得分:5)

简单的答案是:

UPDATE dbo.MyLittleSecurityBreach 
    SET CreditCardNumber = RIGHT(CreditCardNumber, 4);

不要在数据库中存储 * 掩码字符,这有什么用呢?如果你有这种类型,你知道Amex是15个字符,其他所有都是16.在演示时添加11或12个掩码字符。

大家都说过,如果你没有听取加密这些数据的建议,我强烈建议你告诉你的雇主你需要有人来帮助解决数据安全问题。这是一场等待发生的灾难。