【发布时间】:2015-05-30 22:46:57
【问题描述】:
我们有一个日志表,其中有一个 varchar(max) 字段,其中包含在远程系统调用中来回传递的 xml 副本。
问题是我们将信用卡数据存储在列中,公开存储。我们的目标是混淆、屏蔽或删除信用卡数据。 xml 的格式多种多样。我们知道大多数情况下的格式。
假设表格的标题为 RemoteSysLog,存储文本的字段的标题为 InBoundMessage。
关于解决方案的任何想法?
我们考虑过
- 使用 xml.remove 功能
- 对 16 位数字使用某种模式匹配并替换为 xxxxx(不确定使用什么
- 用标准替换、子字符串、字符索引字符串处理例程替换节点。
有多个来源正在记录到此表。因此,公司不想编辑这些“旧版”应用程序的所有源代码。所以解决方案需要在这个范围内。
【问题讨论】:
-
不要使用标准字符串方法来操作 XML。使用适当的 XML 解析器(如 .NET 端的 LINQ to XML)。模式匹配可能是您最好的选择,但请注意,在其他情况下,您不会有一个包含 16 个数字的字段不是信用卡号。
-
你到底为什么要在任何地方以纯文本形式存储信用卡信息???在处理此类信息方面,您无需混淆完全重组流程所需的数据。
-
16 位屏蔽不会帮助您的美国运通客户。理想情况下,将 xml 发布到表中的任何服务都需要从中剥离 CC 信息。
-
混淆还不够好 - 任何时候它被传递,它都应该被加密。你不想上晚间新闻。我会说,因为它正在记录,所以不要发送它。
标签: sql-server xml tsql