web-dev-qa-db-ja.com

ユーザー入力をサニタイズする必要がありますかLaravel

私はEloquentでLaravel 4を使用しています。ユーザー入力を取得したら、$name=Input::get('name')を使用してから、$a->name=$name;を実行します。

関数Input::getがSQLインジェクションとXSSから私を保護しているかどうかはわかりません。そうでない場合、入力をサニタイズするために何をする必要がありますか?

そして、ビューに値を表示するときは、{{$a}}または{{{$a}}}を使用しますか

ご挨拶と感謝。

9
Fylux

LaravelはPDOのパラメーターバインディングを使用するため、SQLインジェクションについて心配する必要はありません。 this と読む必要があります。

Input :: get()は何もフィルタリングしません。

中括弧は、e()およびHTML :: entity()と同じです。これらはすべて、UTF-8をサポートするhtmlentitiesを呼び出します。

htmlentities($your_string, ENT_QUOTES, 'UTF-8', false);
11
cha-cha

たとえば、入力にはHTMLタグを含めることができるため、{{{$a}}}を使用する必要があります。 Laravelはそれをフィルタリングしません。

SQLインジェクションを回避するには、次のようなクエリを実行するパラメータをバインドする必要があります。

$var = 1;
$results = DB::select('select * from users where id = ?', array($var));

ではなく:

$results = DB::select('select * from users where id = '.$var);
4