Laravel 5路由获取参数SQLinjection

时间:2016-01-21 03:23:51

标签: php laravel-5

我有这样的路线

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因为路由发送了raw参数。

在帖子请求中,我可以捕获$request->input('some_fields')之类的请求,laravel会在屏幕后面保护我,但不会在获取请求中保护。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您也可以使用

在Get请求中使用$ 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