【问题标题】:Mask credit card numbers in SQL Server在 SQL Server 中屏蔽信用卡号
【发布时间】:2011-11-11 13:44:53
【问题描述】:

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

【问题讨论】:

  • 如果您要存储信用卡号码,您可能应该考虑对它们进行加密。
  • 我该怎么做呢?
  • 通过以纯文本形式存储信用卡号,您不仅在实施糟糕的 IT,而且还使您的公司面临被禁止处理支付卡交易的风险。想想在你的年度审查中结果如何;)pcisecuritystandards.org
  • @HardCode:当然。这种事情会扼杀一个企业

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


【解决方案1】:

简单的答案是:

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

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

总而言之,如果您没有听取有关加密此数据的建议,我强烈建议您建议您的雇主您需要有人帮助保护数据安全。这是一场等待发生的灾难。

【讨论】:

  • 干杯 - 我感谢所有的关注!
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-20
    • 2023-03-13
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 2012-02-22
    相关资源
    最近更新 更多