テンプレートエンジンと
XSS 対策の実装
2026.04.19
9 MIN READ
AUTHOR: MAYA
"デザインとロジックを混ぜることは、料理と掃除を同時に行うようなものです。どちらも中途半端に終わります。"
1. 出力バッファリングの活用
PHP の ob_start() と ob_get_clean() を使い、テンプレートファイルを一度メモリ上に展開してから変数に格納する仕組みを構築しました。これにより、コントローラーから「どのレイアウトにどのデータを流し込むか」を完全に制御できるようになります。
View Rendering Flow
extract($data); // データを変数として展開 ob_start(); require $template_file; $content = ob_get_clean(); require $layout_file; // 最終的な外枠と合成
2. 自動サニタイズという安全網
Web開発で最も多い脆弱性の一つがクロスサイトスクリプティング(XSS)です。出力時に htmlspecialchars() を通す共通関数 h() を定義。これをテンプレート内で徹底することで、悪意あるスクリプトの実行を未然に防ぎました。
Security as Default
人間は必ず忘れる生き物です。だからこそ、システム側で「エスケープされていない出力」を許容しない仕組みづくりが重要なのです。