我想添加一个自定义的中间件来检查POST请求中的任何脚本,该怎么做?

时间:2019-06-03 06:31:28

标签: php laravel laravel-5.7

我想检查来自我应用程序中各种用户输入表单的POST请求是否包含任何恶意代码脚本或HTML标记(如果找到),我想重定向回表单页面并显示一条消息,指出这些脚本字符不是允许的。我可以在控制器中检查此功能,但我想使用中间件来做到这一点,怎么做,有人可以帮助我吗?

请注意,我只是一个初学者,而不是那个专家,所以如果有任何疑问或逻辑错误,请原谅我。

预期结果是,我要检查表单提交是否有任何输入字段包含任何脚本标签?而且我想通过MIDDLEWARE来实现这一点,这样我就可以在要检查的请求中包含此中间件。

1 个答案:

答案 0 :(得分:0)

您可以使用以下类似的方法来检查来自POST或GET的输入。

public function handle($request, Closure $next)
{
    $this->checkRequest($request);

    $response = $next($request);

    return $response;
}

private function checkRequest($request)
{
    print_r($request->all());

    // you can check for request method here as well
    // $request->isMethod('POST') etc
    // ofcourse i am not checking for malicious code you can do that much better or loop through request parameters thats upto you 

    if ($request->has('some') && $this->isMalicious($request->get('some'))) {
        return redirect()->route('go/home')->with(['message' => 'found some in request']);
    }
}

private function isMalicious($input)
{
     if ($input == 'something') return true;

     return false;
}

如何制作中间件以及如何将其分配给某些路由或组或全局,请参见https://laravel.com/docs/5.8/middleware#global-middleware