在 SQL Server 中屏蔽信用卡号
Posted
技术标签:
【中文标题】在 SQL Server 中屏蔽信用卡号【英文标题】:Mask credit card numbers in SQL Server 【发布时间】:2011-11-11 13:44:53 【问题描述】:我的数据库中有一个存储信用卡号的列。将其在数据库中保存大约两周后,我希望能够运行查询以更新所有信用卡条目并屏蔽它们 - 仅显示最后四位数字。到目前为止,我一直未能找到解决此问题的方法 - 如果信用卡号码的长度不同怎么办?如果我能屏蔽前 12 位数字会更好,除非它以 3 开头,然后只屏蔽前 11 位。
【问题讨论】:
如果您要存储信用卡号码,您可能应该考虑对它们进行加密。 我该怎么做呢? ***.com/questions/2211685/… 通过以纯文本形式存储信用卡号,您不仅在实施糟糕的 IT,而且还使您的公司面临被禁止处理支付卡交易的风险。想想在你的年度审查中结果如何;)pcisecuritystandards.org @HardCode:当然。这种事情会扼杀一个企业 【参考方案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]时被加密)。将数字显示为“以#### 结尾的帐户”或类似内容。
【讨论】:
以上是关于在 SQL Server 中屏蔽信用卡号的主要内容,如果未能解决你的问题,请参考以下文章