返回

如何在 Laravel 5.7 中管理 GET 参数:保持安全和高效

php

Laravel 5.7 中对 GET 参数的管理:允许与拒绝

引言

在现代 Web 应用程序中,有效管理 GET 参数至关重要,以确保安全性和防止恶意请求。Laravel,一个流行的 PHP 框架,提供了多种工具来实现这一目标。本文将深入探讨如何在 Laravel 5.7 中注册允许的 GET 参数并阻止其他参数。

注册允许的 GET 参数

要注册允许的 GET 参数,请在 app/Http/Kernel.php 文件的 $middleware 数组中添加以下行:

\App\Http\Middleware\ValidateGetParameters::class,

然后,在 app/Http/Middleware 目录中创建一个新类 ValidateGetParameters,并在其中实现以下逻辑:

public function handle(Request $request, Closure $next)
{
    $allowedParameters = ['user', 'event', 'action'];

    $getParameters = $request->query();

    foreach ($getParameters as $parameter => $value) {
        if (!in_array($parameter, $allowedParameters)) {
            abort(404);
        }
    }

    return $next($request);
}

阻止未允许的 GET 参数

这个中间件通过检查 GET 参数与允许的参数列表的匹配来阻止未允许的参数。任何不匹配的参数都会触发 404 错误。

示例

以下 URL 将被允许:

以下 URL 将被阻止:

好处

管理 GET 参数的好处包括:

  • 提高安全性,防止恶意攻击
  • 提高性能,通过限制传入的数据量
  • 改善用户体验,通过阻止无效请求

常见问题解答

1. 我如何根据我的应用程序的需求自定义允许的参数列表?

你可以在 ValidateGetParameters 中修改 $allowedParameters 数组以指定允许的参数。

2. 是否可以为某些请求禁用 GET 参数验证?

是,你可以通过在中间件栈中为特定路由或控制器操作添加 withoutMiddleware(ValidateGetParameters::class) 来禁用 GET 参数验证。

3. 如果 URL 包含允许的参数但顺序不正确,会发生什么?

中间件不会检查参数的顺序,只检查它们的存在。因此,只要所有允许的参数都存在,顺序无关紧要。

4. 如何处理空 GET 参数?

空 GET 参数将被视为未允许的参数并被阻止。

5. 除了注册允许的参数,我还可以使用其他方法来管理 GET 参数吗?

是的,Laravel 提供了其他方法,例如使用路由参数验证器或使用数据传输对象 (DTO) 来验证和转换 GET 参数。

结论

通过使用 Laravel 5.7 的中间件,你可以有效地管理 GET 参数,允许有用的参数并阻止潜在有害的参数。这提高了应用程序的安全性、性能和用户体验。通过了解本指南中概述的方法,你可以为你的应用程序实施一个强大的 GET 参数管理系统。