我想检查来自我应用程序中各种用户输入表单的POST请求是否包含任何恶意代码脚本或HTML标记(如果找到),我想重定向回表单页面并显示一条消息,指出这些脚本字符不是允许的。我可以在控制器中检查此功能,但我想使用中间件来做到这一点,怎么做,有人可以帮助我吗?
请注意,我只是一个初学者,而不是那个专家,所以如果有任何疑问或逻辑错误,请原谅我。
预期结果是,我要检查表单提交是否有任何输入字段包含任何脚本标签?而且我想通过MIDDLEWARE来实现这一点,这样我就可以在要检查的请求中包含此中间件。
答案 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