首页 > 解决方案 > 记录 PHP 异常跟踪的安全方式(可能包括合理的凭据)

问题描述

语境

我有一个 Web 应用程序,我在全局范围内捕获了我的异常,以将它们记录到我的应用程序 ( /app/log/app.log) 中的一个文件中。公用文件夹无法在外部浏览,因为它被挂载以提供给客户端 ( /public/index.php)。

我还使用了 的修改版本Exception::getTraceAsString(),它让我拥有完整的字符串,而不是 PHP 截断此跟踪中的字符串(代码真的很简单,我不会把类放在这里,因为它与我提出的问题无关) .

这是我的app.log文件的示例:

2018-06-10 14:33:12.7016 (+02:00) [ERRO] Error of type PDOException catched
2018-06-10 14:33:12.7020 (+02:00) [DBUG] Error catched on line 22 of file C:\xampp\htdocs\my-app\app\bootstrap\database.php
2018-06-10 14:33:12.7026 (+02:00) [DBUG] #0 [internal function]: PDO->__construct('mysql:host=localhost;dbname=test;port=3306;adapter=;prefix=', 'root', '', Array)
2018-06-10 14:33:12.7028 (+02:00) [DBUG] #1 [internal function]: Phalcon\Db\Adapter\Pdo->connect(Array)
2018-06-10 14:33:12.7031 (+02:00) [DBUG] #2 C:\xampp\htdocs\my-app\app\bootstrap\database.php(22): Phalcon\Db\Adapter\Pdo->__construct(Array)
2018-06-10 14:33:12.7034 (+02:00) [DBUG] #3 C:\xampp\htdocs\my-app\public\index.php(7): include('C:\xampp\htdocs\my-app\app\bootstrap\database.php')

知道我想在我的应用程序之外处理这些信息,让我们说 SaaS 服务,用于跨各种日志目标存储和搜索(SaaS 系统的员工可能会看到这些目标)。

问题

如您所见,我的app.log罐头有时包含密码等敏感内容。

问题

是否有最先进的方法来处理我们日志跟踪中内容的敏感性?

此外,关于绝对路径在我们的日志中可见这一事实的安全性如何?

标签: phpsecuritylogging

解决方案


是否有最先进的方法来处理我们日志跟踪中内容的敏感性?

此外,关于绝对路径在我们的日志中可见这一事实的安全性如何?

您可以在这里做的最好的事情是使用公钥加密日志,只有您的运营团队和/或开发人员知道相应的密钥。

也就是说,我推荐使用密封API对日志信息进行加密。

既然你问到最先进的技术,我会特别推荐sodium_crypto_box_seal()/sodium_crypto_box_seal_open()这里。(PHP 7.2+)


推荐阅读