urlencode()に関連する別のフォーラムで質問したところ、ある男が活発にその上にhtmlentitiesを使用する必要があると言ったとき、URLを作成するたびにそれを実行する必要があることを提案しました。「有効で安全であるために彼は言った」。なぜそれがセキュリティの問題になるのかわかりません。これが彼が言及したコードです:
echo '<a href="index.php?' . htmlentities('page=encode&code='.urlencode($code).'&login='.urlencode($login).'&codeconf=' . urlencode($codeconf)) . '">';
PHPマニュアルは確かにhtmlentitiesに言及しています。しかし、これ以上の説明はありません。
注...PHPは、arg_separator .iniディレクティブを使用して、引数区切り文字をW3Cが推奨するセミコロンに変更することをサポートしています。残念ながら、ほとんどのユーザーエージェントは、このセミコロンで区切られた形式でフォームデータを送信しません。これを回避するためのより移植性の高い方法は、&の代わりに&をセパレータとして使用することです。このためにPHPのarg_separatorを変更する必要はありません。&のままにしますが、htmlentities()またはhtmlspecialchars()を使用してURLをエンコードするだけです。
「&」を&amp;に置き換えました 、W3Cバリデーターでページを検証したところ、問題なく表示されました。
私はまだこのhtmlentitiesの問題について心配しています。
- URLでhtmlentitiesを使用する必要がある理由はありますか?
- はいの場合、これはすべてのタイプのURLに適用されますか?
- はいの場合、それはセキュリティ上の理由ですか?