質問: まず、ユーザー入力を伴わず、特殊文字がない値ならエスケープ(`htmlspecialchars`)する必要はないですよね? この前提に誤りがあるとこの後の質問の意味がなくなりますが、この前提が正しいとして質問します。 下記を例します。 ``` test '; ?> ``` `$name` も `$token` もユーザー入力を伴わず、エスケープする必要がないので `h` 関数を通す意味はないかと思います。 `htmlspecialchars` の基準について下記の 2 通りあるかと思います。 1.`htmlspecialchars` を通す必要があるときだけ、`htmlspecialchars` を通す 2.エスケープ漏れを防ぐために `htmlspecialchars` を通す必要がなくても、表示するときは全て `htmlspecialchars` を通す エスケープ漏れを防ぐために後者の方が良いのではと考えています。 ケースバイケースかもしれませんが、みなさんはどのようにしていますか? 参考のために教えてください。
回答: 判断の基準は一つです。 ・Content-Type: text/plain な入力を Content-Type: text/html な環境の中に出力するとき。 「何故htmlspecialcharsを通すのか?」を一言でどうぞ この記事好きですw