哪些信息绝对不能出现在日志中?[关闭]


11

我将要编写公司准则,以指导日志中绝不能出现的内容(应用程序的痕迹)。实际上,一些开发人员试图尽可能多地包含尽可能多的信息,这使得存储这些日志很冒险,并且提交它们非常危险,尤其是当客户不知道该信息是否存储时,因为她从不关心此信息。切勿阅读文档和/或警告消息。

例如,在处理文件时,一些开发人员很想跟踪文件名。例如,在将文件名附加到目录之前,如果我们跟踪所有错误内容,则很容易注意到例如附加名太长,并且代码中的错误是忘记检查代码的长度。串联字符串。这很有用,但这是敏感数据,绝不能出现在log中

以相同的方式:

  • 密码
  • IP地址和网络信息(MAC地址,主机名等)¹,
  • 数据库访问
  • 来自用户的直接输入和存储的业务数据

绝对不能出现。

那么,必须从日志中清除其他哪些类型的信息?有没有已经写好的指南可以使用?


¹显然,我不是在谈论IIS或Apache日志。我所说的是收集信息的唯一目的是调试应用程序本身,而不是跟踪不可信实体的活动。


编辑:谢谢您的回答和评论。由于我的问题不太精确,因此我将尝试回答评论中提出的问题:

  • 我在处理日志吗?

应用程序的日志可能存储在内存中,这意味着可以将其存储在本地主机的硬盘中,数据库中,也可以存储在Windows事件中。在每种情况下,都担心这些来源可能不够安全。例如,当客户运行一个应用程序并且该应用程序将日志存储在temp目录的纯文本文件中时,任何对PC有物理访问权限的人都可以读取这些日志。

该应用程序的日志也可以通过互联网发送。例如,如果客户对应用程序有疑问,我们可以要求她以全跟踪模式运行该应用程序并向我们发送日志文件。此外,某些应用程序可能会自动将崩溃报告发送给我们(即使存在有关敏感数据的警告,在大多数情况下,客户也不会阅读这些警告)。

  • 我是在谈论特定领域吗?

否。我仅在一般业务应用程序上工作,因此唯一敏感的数据是业务数据。没有任何与健康或特定法规涵盖的其他领域相关的内容。但是,谢谢您谈论这个问题,我可能应该看看这些领域,以获取一些有关我可以在指南中包括的内容的线索。

  • 加密数据难道不是很容易吗?

不会。这会使每个应用程序变得更加困难,特别是如果我们要使用C#诊断程序和TraceSource。它还需要管理授权,这不是最简单的想法。最后,如果我们谈论的是客户提交给我们的日志,则我们必须能够读取日志,但不能访问敏感数据。因此,从技术上讲,从不将敏感信息完全不包含在日志中,并且永远不在乎这些日志的存储方式和位置会更容易。


您是否考虑日志级别?我的意思是,对debug文件名可能没问题,但对info文件名却不行。
Jeremy Heiler'3

@Jeremy Heiler:我只是在谈论日志数据,这些数据要么存储到硬盘(通常以不安全的方式),和/或通过Internet发送给应用程序的开发人员以进行调试。
阿森尼·穆尔琴科

无论日志级别是多少,许多应用程序都将日志直接写入磁盘。除非您的日志存储是数据库表,否则...如果要通过网络将日志文件发送给其他开发人员,则可以对文件进行加密,是吗?
FrustratedWithFormsDesigner

2
如果不知道自己在做什么,很难确定敏感数据是什么。您是否有监管方面的顾虑(PCI或HIPAA或其他)?
David Thornley'3

1
如果您可以谈论所从事的特定领域,请向security.stackexchange.com咨询,因为那里的安全/合规专家可以告诉您有关法规,法律或其他安全问题。

Answers:


3

我认为处理此问题的最佳方法是将日志文件视为应用程序的另一个用户界面。信息存储在文本文件中的事实与内容在用户界面的常规屏幕上显示的信息没有任何不同。

考虑如果要在常规用户界面中显示相同信息,您将如何保护它们。您必须确定用户是谁,然后仅公开该用户有权查看的信息。

日志文件中的信息必须以相同的方式处理。您必须首先准确回答应该让谁看到日志文件以及应该允许他们看到哪些信息。

传递设计不当的日志文件会带来巨大的安全风险。我认为您不会通过将某些数据列入黑名单来解决此问题。更好的策略是将每个日志文件中可能包含的内容列入白名单,并以此自底向上设计日志文件。


8

永远不要记录信用卡信息。

ID号(例如,美国的SSN或以色列的Teudat Zehut#)。

网络计算机名称,网络共享路径。


PCI-DSS标准禁止以任何方式,形状或形式存储卡号。
Tangurena'3

@Tangurena不是正确的,它们确实允许存储,但要求对其进行适当的保护。(PCI-DSS要求和安全评估V2.0,2010年10月,要求3)
Newtopian 2011年

7

《 1996年健康保险携带与责任法案》(HIPAA)涵盖的个人可识别健康信息。 本文列出了以下示例:

  • 医疗保健索赔或医疗保健遇到的信息,例如医生就诊的文件以及医师和其他提供者人员所做的笔记;
  • 医疗保健付款和汇款建议;
  • 协调保健福利;
  • 保健索赔状态;
  • 健康计划的入学和退学;
  • 符合健康计划的资格;
  • 健康计划保费支付;
  • 推荐证书和授权;
  • 首次受伤报告;
  • 健康声明附件。


2

离开我的头顶...

信用卡信息不应记录在日志中。SSN(或SIN)数据不应记录在日志中。

...当然有例外,如果您碰巧需要为管理SIN数据的信用卡公司或政府机构的某个中央数据存储工作,那么您可能必须对其进行记录,因为这是您所需要的主要内容正在处理/管理。


1

好但是。

要调试某些问题,您需要真实的数据。

因此,您必须权衡利弊:实际上,您必须与主要客户讨论并同意他们认为什么是机密或敏感数据,什么不是。如果有几个客户不同意,则应针对每个方面采取最坏的情况,除非您可以为那些可能在标明所有敏感内容时过度使用的客户辩护。

我曾在空中交通管制,金融和银行业工作。在每种情况下都有敏感数据。在某些情况下,不可避免的是要处理敏感数据,在这种情况下,您需要确保与值得信赖的人一起工作。可通过在访问此类数据之前达成一致的法律条款来缓解这种风险(非披露协议,仅出于有效的商业原因使用数据,对数据的访问受限,因不遵守或执行协议而受到的起诉处罚...) -以及相关流程,可以跟踪这些内容。

如果数据至关重要,那么您必须付出代价来建立保护该数据的完整性,一致性和安全性的系统。

也就是说,您问“哪个数据”这个问题是正确的。确实,您可以自己回答:大多数与业务相关。因此,请问您的客户您是否无法回答自己-请牢记以上所有内容,并保留某种方式来识别和解决可能出现的问题。


我处理过实时抵押数据,其中有很多我可能会滥用的东西。有趣的是,我没有经过安全审查或要求签署任何特定的文件。那和我处理敏感数据较少的地方之间的最大区别是缺乏办公室彩票池。
David Thornley

0

我想说的是,在编写代码时记录看起来很有趣的消息。您不会发现他们有趣,他们会永远存在-就像那条不明智的博客/ facebook / twiter帖子一样!

保持日志消息无聊:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.