Laravelでインプットフィルター

タグ: Laravel3  

インプットフィルターはセキュリティー的な考えで行うのであれば、最近の傾向からすると古い手法です。出力にフィルターをかけることが推奨されており、LaravelのHTMLクラスとFormクラスの出力は全部e()ヘルパーが通されます。

e()ヘルパーの実態は、htmlentities()です。ですから、標準的なセキュリティー対策が取られています。

それでもセキュリティを強化したり、入力を変換したい場合は入力フィルタリングも簡単に実現できます。

コントローラー単位で仕込みたい場合はそのコントローラにコードを仕込みます。全コントローラーに対して行いたい場合は、予め用意されているBase_Controllerを継承しておき、その中に該当コードを書きます。

Laravelの場合、コントローラーを使用しないルート定義もできます。コントローラーを使用する/しないに限らず、全ルートの入力に通す場合は、routes.phpbeforeフィルターを使用しましょう。例えば、全入力をtrim()したい場合は、次のようなコードになります。

Route::filter('before',
    function() {
        Input::replace(array_map( 'trim' ,Input::all()));
    });