Laravel 5 route get parameters SQLinjection



我有这样的路线

Route::get('/car-{travelType}/{cityFrom}-{cityTo}-{id}.html','ArticleController@getDetail')->name('articles_detail');

在我的控制器中,我捕获了这样的参数

public function getDetail($cityFrom, $cityTo, $id, Request $request)
{
    $article_detail = DB::select("CALL article_detail(?,?,?)", [$cityFrom,$cityTo,$id]);
    return $article_detail;
}

这将正常工作,但存在一个问题,即此查询由于路由发送原始参数而获得 sqlinjection。

在后请求中,我可以像$request->input('some_fields')和 laravel 一样捕获请求,并在屏幕后面保护我,但不能在获取请求中。

如何解决该问题?

您也可以在Get request上使用$request->get('somefield')

www.site.com/page?somefield=value

在这种情况下,当你采用$request->get('somefield')时,它应该给你"价值"

所以在你的情况下:

www.site.com/page?travel-type=foo&city-from=berlin&city-to=munich&id=1
$request->get('travel-type'); // foo
$request->get('city-from');   // berlin
$request->get('city-to');     // munich
$request->get('id');          // 1

最新更新