最近セキュリティの勉強をしています。 その中で一つ疑問に思って色々調べてみたけど、なかなか理由がわからないことがありました。 それは、HTMLの属性値を「"(ダブルクォート)」で囲むことを推奨していることです。 HTMLの属性値は、クライアントから受け取った値を使って動的に生成している場合、クロスサイトスクリプティングの脆弱性が発生してしまいます。そのため、HTMLエスケープする必要がありますが、「'(シングルクォート)」や「"(ダブルクォート)」の引用符で囲まなければ、たとえエスケープしていてもクロスサイトスクリプティングが可能です。 例えば以下のように、攻撃文字列の間にスペースを入れます。 <input type=text name=name value=<?php echo(htmlspecialchars($_GET())); ?>> ↓ <input type=text name