php - 如何从 php debug_print_backtrace 隐藏函数参数

标签 php

我希望 debug_print_backtrace 不打印敏感的函数参数。我的天真的解决方案不起作用。

<?php

function err ()
{
    debug_print_backtrace ();
}

function foo ($secret_arg, $arg)
{
    $arg = $secret_arg;
    $secret_arg = "<HIDDEN>";

    err ();
}

foo ("mysecret", 123);
?>

此输出

#0  err() called at [/tmp/x.php:13]
#1  foo(mysecret, 123) called at [/tmp/x.php:16]

即使我在函数中覆盖了 $secret_arg,回溯显示它仍然包含 "mysecret"

但我确实仍然希望在跟踪中显示任何不 protected 参数。

是否有任何非 hacky 的方法可以从跟踪中隐藏此参数?从设计的角度来看,我真的希望函数能够在本地知道要保护哪些参数,而不是编写一个新的回溯函数来知道所有敏感参数在哪里。

最佳答案

从 PHP 5.3.6 开始,您可以简单地执行以下操作:

debug_print_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);

来自http://php.net/manual/en/function.debug-print-backtrace.php :

DEBUG_BACKTRACE_IGNORE_ARGS Whether or not to omit the "args" index, and thus all the function/method arguments, to save memory.

关于php - 如何从 php debug_print_backtrace 隐藏函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40719174/

相关文章:

php - .htaccess 301 重定向文件夹和子文件夹

php - 如何从未选中的复选框中获取值

php - SQL 引用在一台服务器上产生 sql 语法错误,而不是另一台服务器

php - 使用 AJAX 将 Javascript 字符串发送到 PHP 文件,然后从文件返回数组

PHP 从远程 URL 读取 JSON 文件

php - 试图克隆一个 stdClass

php - laravel是否有可能达到1000 TPS?

php - 在 MySQL 中的单个单元格中插入多个值

php - Laravel 无法在 CentOs 7.2 上连接 mariaDB

php - 使用 jquery 缩放/缩放网站内容以适应浏览器区域