テンプレートエンジンの「自動エスケープ」は万能の鍵ではない?安全な開発の落とし穴を徹底解説!
こんにちは。セキュリティの現場に長くいると、「最新のフレームワークを使っているから、セキュリティ対策はバッチリだよね?」という言葉をよく耳にします。確かに、Jinja2(Python)やThymeleaf(Java)のような現代的なテンプレートエンジンは、私たちが何もしなくてもHTMLを安全に表示するための「自動エスケープ」という素晴らしい機能を持っています。
でも、ちょっと待ってください。その「自動」という言葉を過信してはいけません。今回は、家の防犯に例えながら、テンプレートエンジンが持つ「限界」と、私たちが本当に守るべき場所について、一緒に紐解いていきましょう。
—
1. 「自動エスケープ」は玄関の頑丈なオートロック
まず、テンプレートエンジンの「自動エスケープ」を、「最新のオートロック付き玄関ドア」だとイメージしてください。
通常、Webサイトに名前や住所などを表示する際、HTMLの特殊文字(< や > など)がそのまま残っていると、ブラウザはそれを「プログラムの一部」だと勘違いして実行してしまいます。これが「クロスサイトスクリプティング(XSS)」という攻撃の入り口です。
テンプレートエンジンは、この玄関ドアの役目を果たします。
例えば、ユーザーが名前の欄に と入力しても、自動エスケープ機能がこれを
コメント