まず、ユーザー入力を伴わず、特殊文字がない値ならエスケープ(htmlspecialchars
)する必要はないですよね?
この前提に誤りがあるとこの後の質問の意味がなくなりますが、この前提が正しいとして質問します。
下記を例します。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>test</title> </head> <body> <?php function h($str) { return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); } function token() { return bin2hex(random_bytes(32)); } $name = 'token'; $token = token(); echo '<input type="hidden" name="'.h($name).'" value="'.h($token).'">'; ?> </body> </html>
$name
も $token
もユーザー入力を伴わず、エスケープする必要がないので h
関数を通す意味はないかと思います。
htmlspecialchars
の基準について下記の 2 通りあるかと思います。
1.htmlspecialchars
を通す必要があるときだけ、htmlspecialchars
を通す
2.エスケープ漏れを防ぐために htmlspecialchars
を通す必要がなくても、表示するときは全て htmlspecialchars
を通す
エスケープ漏れを防ぐために後者の方が良いのではと考えています。
ケースバイケースかもしれませんが、みなさんはどのようにしていますか?
参考のために教えてください。
回答2件
あなたの回答
tips
プレビュー