🐥

Laravel:XSS対策とエスケープ処理

2025/03/01に公開

はじめに

クロスサイトスクリプティング(XSS)は、Webアプリケーションのセキュリティ上の重大な脆弱性の一つです。LaravelはXSS対策として自動エスケープ機能を提供しています。本記事では、LaravelにおけるXSS対策とエスケープ処理について簡単にまとめています。

XSSとは?

XSS(Cross-Site Scripting)は、悪意のあるスクリプトをWebページに埋め込み、ユーザーのブラウザ上で実行させる攻撃手法です。例えば下記のようなリスクが発生します。

・ユーザーのクッキー情報が盗まれる
・フィッシングサイトへリダイレクトされる
・ユーザーの入力フォームが改ざんされる

LaravelにおけるXSS対策

Laravelは、Bladeテンプレートエンジンを使用することでXSS攻撃を防ぐためのエスケープ処理を自動で行います。

1. Bladeの{{ }}による自動エスケープ

Bladeテンプレートでは、{{ }} を使用すると自動エスケープされるため、スクリプトの実行を防ぎます。

<p>
  {{ Auth::user->name }}さん、こんにちは。
</p>
<p>&lt;script&gt;alert('XSS')&lt;/script&gt;</p>

2. エスケープを無効化する{!! !!}の使用に注意

エスケープ処理をせず、コードを反映させたい時は、波括弧を一つ減らし、エクスクラメーションマークを2つ入れます。{!! !!} を使用すると、エスケープ処理を行わず、そのままHTMLを出力します。

<p>{!! $user->bio !!}</p>

悪意のあるコードを入れられる危険がない時に使うようにしましょう。

まとめ

LaravelではBladeテンプレートエンジンを使用することで、デフォルトでXSS対策が施されています。ただし、{!! !!} の使用やエスケープ処理の無効化には注意が必要です。

Discussion