【问题标题】:How to log an Error without leaking any security info or stacktrace?如何在不泄露任何安全信息或堆栈跟踪的情况下记录错误?
【发布时间】:2012-03-02 17:49:52
【问题描述】:

当我在我的项目上运行 Fortify Scan 时,我确实看到我正在使用记录异常

LOGGER.error(e.getMessage(),e);

它说这不是正确的方法,因为攻击者可能会访问此信息并从中获取系统信息并计划攻击。

最好的方法是什么?(不影响安全性)?

【问题讨论】:

    标签: java security exception-handling error-logging


    【解决方案1】:

    坦率地说,这种推理在大多数情况下都是荒谬的。您的 LOGGER 对象应该写入本地文件系统,如果远程攻击者可以访问您的文件系统,您将遇到方式更大的问题。

    酌情限制对您的日志文件的访问,然后按您的意愿登录。

    【讨论】:

    • 总的来说,我倾向于同意您的观点,即设计和维护良好的系统。但是你会惊讶于我见过有多少系统可以输入“mysite.com\logforj.log”和 BAM,查看日志文件。
    • 如果你在你的 webroot 中登录,你应该解雇你的开发人员 ;-)
    • 但更严重的是,这就像说“如果我们在我们的网站上托管我们的源代码,人们就可以下载我们的源代码!!!”修复?不要将您的源代码或日志文件放在您的网站上!
    【解决方案2】:

    您可以在生产中关闭注销,但是当最终用户报告错误并且您不知道发生了什么时,这将使您非常不利。

    您应该将日志视为关键数据,并在操作系统级别保护对它们的访问,例如对数据库文件的访问。如果攻击者访问数据库,他无论如何都会破坏系统。充其量只有系统管理员应该有权访问日志文件,并且应该只在需要时才将它们提供给开发人员(生产中的严重错误等)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-31
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多