glaivepro/hidevara

Laravel 微包,当您的应用程序崩溃时,它会隐藏变量,以免在 Whoops 页面上被导出。

1.1.0 2020-03-21 16:47 UTC

This package is auto-updated.

Last update: 2024-09-15 04:05:37 UTC


README

尽管 Laravel >=6.x 包含 Ignition,它不再导出您的变量,但它仍然需要 Whoops 本身。在某些情况下,您仍然可以访问带有变量导出的旧错误页面。

此包与 Laravel 8 一起工作得很好。我没有更新它,因为它仍然像以前一样正常工作。

Laravel 微包,当您的应用程序崩溃时,它会隐藏变量,以免在 Whoops 页面上被导出。

Hidevara 是日语中“隐藏这些该死的变量”的意思。

使用方法

安装它

$ composer require glaivepro/hidevara

为了处理在加载提供者之前应用程序崩溃的情况,您应该打开您的 bootstrap/app.php 并扩展处理程序。找到以下行(或如果您更改了该名称空间,则类似的东西)

// This is already there
$app->singleton(
    Illuminate\Contracts\Debug\ExceptionHandler::class,
    App\Exceptions\Handler::class
);

立即在此之后插入以下行以扩展处理程序

// Enable only outside testing as this does not work well with phpunit... see below
if ('testing' != env('APP_ENV'))  // this will work even with config caching
	$app->extend(
		Illuminate\Contracts\Debug\ExceptionHandler::class,
		function($handler) {
			return new GlaivePro\Hidevara\HidingHandler($handler);
	});

默认情况下,此包将

  • 保留您的 GET 和 FILE;
  • 隐藏任何名称包含 password 的 POST 字段值;
  • 隐藏 SESSION 和 COOKIE 的值;
  • 删除除 REDIRECT_STATUS、REQUEST_METHOD、QUERY_STRING、REQUEST_URI 之外的所有 SERVER 变量;
  • 删除所有 ENV 变量。

“隐藏”意味着值将被替换为字符串。默认情况下,对于 null/emptystring 值是空字符串,对于其他所有内容是 [hidden]

自定义

发布配置

$ php artisan vendor:publish --provider="GlaivePro\Hidevara\Provider"

现在您有了自己的 config/hidevara.php 文件可以进行编辑。

您会看到与每个变量关联的规则集('action' => $test)。测试可以是精确字段名的数组、字符串正则表达式或 true 以对任何内容执行此操作。

以下是一个示例

	'_GET' => [                   //this is the ruleset for fields in GET
		'expose' => true,         // show all fields
	],

	'_ENV' => [
		'remove' => ['APP_KEY'],  // remove key field entirely
		'hide' => '/password/i',  // hide anything that matches regex contains password
		'trash' => '/PUSHER/'     // anything that's not 'expose' or 'hide' will remove matched fields
		'expose' => true,         // expose all that remains
	],
	
	'_SERVER' => [
		'expose' => ['REQUEST_METHOD'],  // show the REQUEST_METHOD
		                                 // everything that hasn't matched a rule will be removed
	],

还有 replaceHiddenValueWithreplaceHiddenEmptyValueWith,您可以为它们提供您喜欢的任何字符串(如 🍑)。

错误处理更改

要隐藏全局变量从 Whoops,它们在调用您的 Handler::render() 之前被劫持/破坏。如果您需要在该方法中访问原始的全局变量,您可以在 $GLOBALS['hidevara'] 中获取它们。例如,$GLOBALS['hidevara']['_SERVER'] 就是 $_SERVER

与 PHPUnit 一起工作

有时(据说是当抛出异常时)此包会导致 PHPUnit 崩溃。为了防止这种情况,我们不启用自定义处理,当环境是 testing 时。

如果您需要在运行 PHPUnit 时启用此功能,可以通过在您的 phpunit.xml 中的 <phpunit> 标签上设置 processIsolation="true" 来防止错误。

协作

请帮助!以下是一些开放问题和疑问

  • 我们应该制作一个控制台命令来修复 app\bootstrap.php。我们可以强制在需要时在提供者中调用它吗?
  • 默认配置应该是什么?
  • 配置应该允许重复相同的规则吗?虽然可能,但这会使配置语法更复杂。
  • 在 Laravel 中还有更好的方法来做这件事吗?
  • 我们可以直接在 Whoopsies 的 PrettyPageHandler 中拦截并使其不特定于 Laravel 吗?

变更日志

有关最近更改的更多信息,请参阅 变更日志

许可证

MIT许可(MIT)。更多信息请参阅许可文件