我正在使用Laravel's Eloquent ORM(及相关软件包)重新编写遗留PHP应用程序的数据库层。
有时,在使用模型时,我会忘记调用 get 方法(或其他返回集合的类似方法)。在调试过程中,如果我在查询构建器对象上调用var_dump,它会转储一堆敏感信息,如数据库用户名/密码:
//Trying to access User model, but forgot to use get method
$test = User::where('name', 'Joe');
//Dump a Illuminate\Database\Eloquent\Builder object with all its sensitive bits out
var_dump($test);
我想知道是否有一些安全措施可以防止显示此信息,以便在某些调试代码被推送到生产时我不会结束向用户提供我的数据库密码。
答案 0 :(得分:1)
您可以将PHPMD与Development Code Fragment之类的规则一起使用。在推进生产之前,您每次都要运行它。
通常仅使用var_dump(),print_r()等函数 在开发期间,因此生产代码中的此类调用是 很好的指标,他们只是被遗忘。
示例:
class SuspectCode {
public function doSomething(array $items)
{
foreach ($items as $i => $item) {
// …
if ('qafoo' == $item) var_dump($i);
// …
}
}
}
此规则具有以下属性:
格式错误的表格。表格第4行中列边距中的文本。
=================================== =============== ==================================================
Name Default Value Description
=================================== =============== ==================================================
unwanted-functions var_dump,print_r,debug_zval_dump,debug_print_backtrace Comma separated list of suspect function images.
=================================== =============== ==================================================