一千萬個為什麽

搜索

如何從debug_backtrace函數中刪除敏感數據?

我使用print_r(debug_backtrace(),true)來檢索調試回溯的字符串表示。這工作正常,因為print_r處理遞歸。

當我嘗試遞歸遍歷debug_backtrace()返回數組,然後將其轉換為字符串時,它會遇到遞歸並且永遠不會結束。

有沒有一些簡單的方法可以從回溯數組中刪除某些敏感的鍵/值對?也許某種方法使用print_r將數組轉換為字符串,然後返回到一個數組,其遞歸位置更改為字符串 RECURSION ,我可以叠代。

如果可能的話,我不想在字符串表示上執行正則表達式。

最佳答案

Aha ...想通了如果我序列化debug_backtrace數組然後立即反序列化它,結果數組將缺少原始數組的遞歸引用,我可以安全地遞歸叠代它。

$backtrace = debug_backtrace();
$backtrace = serialize($backtrace);
$backtrace = unserialize($backtrace);

recursive_sanitization_func($backtrace);

EDIT: Okay, so this isn't a complete solution. It works for recursive objects references (they are lost) but not for recursive arrays (they are retained).

My current solution is to serialize/unserialize as above, and then run the resulting array through a recursion-detection function such as that described here: http://www.php.net/manual/en/ref.array.php#96914

我希望有一些更直接的東西,但這是讓我暫時離開,除非有人想出更好的解決方案。

轉載註明原文: 如何從debug_backtrace函數中刪除敏感數據?