e関数とは
e
関数は、HTMLエスケープを行うためのヘルパーメソッドです。
引用:ヘルパ 8.x Laravel
e
関数は、PHPのhtmlspecialchars
関数をdouble_encode
オプションにデフォルトでtrue
を指定し、実行します。
参考:PHP: htmlspecialchars – Manual
HTMLのエスケープとは、HTML特有の文字(<
, >
, &
など)を、別の文字列に変換することを指します。
単に不具合を防ぐだけでなく、悪意あるコードの挿入やクロスサイトスクリプティング(XSS)攻撃を防ぐためにも、このエスケープ処理が必要です。
使用例
文字列の中にスクリプトが含まれている場合の例が以下です。
$rawString = '<script>alert("Hello!");</script>';
$escapedString = e($rawString);
echo $escapedString;
この例では、e
関数によってHTMLエスケープされ、alert("Hello!");
が実行されないようになります。
この中身が危険なスクリプトになっていることもあるため、文字列がユーザーからの入力を反映するようなケースでは、e関数が重要な役割を持ちます。
Bladeテンプレートでは
Bladeテンプレートでは、通常、{{ $variable }}
のような構文を使用して変数を表示します。
Bladeの{{ }}
は、デフォルトで変数の値をエスケープして表示します。
Bladeの
引用:Bladeテンプレート 10.x Laravel{{ }}
エコー文は、XSS攻撃を防ぐために、PHPのhtmlspecialchars
関数を通して自動的に送信します。
しかし、明示的にe
関数を使用することも可能です。
<div>
{{ e($content) }}
</div>
上記に使用することで、$content
変数の中身がHTMLエスケープされて表示されます。