【问题标题】:Want to remove or obfuscate credit card info from xml stored as text想要从存储为文本的 xml 中删除或混淆信用卡信息
【发布时间】:2015-05-30 22:46:57
【问题描述】:

我们有一个日志表,其中有一个 varchar(max) 字段,其中包含在远程系统调用中来回传递的 xml 副本。

问题是我们将信用卡数据存储在列中,公开存储。我们的目标是混淆、屏蔽或删除信用卡数据。 xml 的格式多种多样。我们知道大多数情况下的格式。

假设表格的标题为 RemoteSysLog,存储文本的字段的标题为 InBoundMessage。

关于解决方案的任何想法?

我们考虑过

  1. 使用 xml.remove 功能
  2. 对 16 位数字使用某种模式匹配并替换为 xxxxx(不确定使用什么
  3. 用标准替换、子字符串、字符索引字符串处理例程替换节点。

有多个来源正在记录到此表。因此,公司不想编辑这些“旧版”应用程序的所有源代码。所以解决方案需要在这个范围内。

【问题讨论】:

  • 不要使用标准字符串方法来操作 XML。使用适当的 XML 解析器(如 .NET 端的 LINQ to XML)。模式匹配可能是您最好的选择,但请注意,在其他情况下,您不会有一个包含 16 个数字的字段不是信用卡号。
  • 你到底为什么要在任何地方以纯文本形式存储信用卡信息???在处理此类信息方面,您无需混淆完全重组流程所需的数据。
  • 16 位屏蔽不会帮助您的美国运通客户。理想情况下,将 xml 发布到表中的任何服务都需要从中剥离 CC 信息。
  • 混淆还不够好 - 任何时候它被传递,它都应该被加密。你不想上晚间新闻。我会说,因为它正在记录,所以不要发送它。

标签: sql-server xml tsql


【解决方案1】:

日志服务应该在存储消息之前清理支付信息……这太冒险了。即使您之后通过修改 CC 信息,您的数据库和事务备份仍可能包含您要擦除的信息。

由于您描述的是需要转换的 XML 消息,因此我的首选方法将涉及 xslt。

Something like this.

【讨论】:

  • 不幸的是,我们有多个 c# 程序对这个表进行更新。所以,是的,这将是最好的解决方案,但在时间和维护方面,这不是公司想要的:(
  • 考虑为此功能创建一个服务层,并更新每个与此数据对话的系统。做得好,它真的不应该花费太多的努力。在任何情况下,尽可能多地采用补偿措施,并确保尽可能使用 XML 技术来操作 XML 文档。在进行完整备份之前,一定要对所有可能的内容进行消毒,由于保留,这些备份往往具有保质期。对于诊断日志记录应用程序来说,这可能不是一个大问题。
猜你喜欢
  • 2010-12-18
  • 2015-02-23
  • 1970-01-01
  • 2011-03-17
  • 2012-10-12
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
相关资源
最近更新 更多