昔の自分へ
こんにちは!
この記事では、Laravel における HTMLエスケープ について、学生時代の自分の体験も交えながらまとめてみます。
🌱PHPだけでバックエンドのコードを書いていた頃
私は学生時代、学習のためPHP単体でWebアプリケーションのバックエンド開発をしていました。
その頃は、HTMLエスケープの重要性は理解していたけど…
-
htmlspecialchars($str, ENT_QUOTES, 'UTF-8')
をいちいち書くのが面倒 - だから毎回書き忘れないように自作で関数を用意していたがそれを呼び出すのすら面倒
- 「どこで使ったか/使ってないか」が曖昧になって不安
今思えばXSS対策を意識していたけど、その手間で開発自体がストレスになってしまっていたわ…と思います。
昔の自分に言いたい「Blade使ってごらん」って。
Laravelに触れたとき、まず感動したのが{{ $value }}
です。
これはGETした変数の値をHTMLエスケープするための記述ですが、意味は以下の表のようになっています。
エスケープ | Blade構文 | 意味 |
---|---|---|
する | {{ $value }} | htmlspecialchars() 相当の処理を内部で自動的に実行 |
しない | {!! $value !!} | エスケープせずにそのままHTMLとして出力 本当に安全なデータにのみ使用 |
1行で完結です。すごい。
Laravelを使うことで、安全性・保守性・開発効率がグンと向上します。
用語整理
自分用メモです。(解説記事などによく出てきてたまに混乱するので)
用語 | 目的 | いつ使う? |
---|---|---|
エスケープ | データを安全に表示するために変換する (XSS防止) |
データを 「表示する時」 |
バリデーション | 入力が正しい形式かをチェックする | データを 「受け取る前」 |
おわりに
Laravelに触れる前にPHP単体で地道に開発していた経験があったので、割とすんなり理解できてよかったです。