如何在不泄漏任何安全信息或堆栈跟踪的情况下记录错误?

时间:2012-02-10 08:20:45

标签: java security exception-handling error-logging

当我在项目上运行Fortify Scan时,我确实看到我正在使用

记录异常
LOGGER.error(e.getMessage(),e);

并且它说这不是正确的方式,因为attckers可以访问此信息并从中获取系统信息并计划攻击。

这样做的最佳方式是什么?(没有对安全性进行编制)?

2 个答案:

答案 0 :(得分:6)

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

根据需要限制对日志文件的访问,然后记录您内心的内容。

答案 1 :(得分:3)

您可以在生产中关闭日志记录,但是当最终用户报告错误并且您不知道发生了什么时,这会使您处于极大的劣势。

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