hail2u / html-best-practices

For writing maintainable and scalable HTML documents
4.11k stars 439 forks source link

Feature Request: & have been escaped as & #18

Closed momdo closed 9 years ago

momdo commented 9 years ago

& have been escaped as &

Bad:

<p>A & B</p>
<p><a href="http://example.com/test.cgi?hoge=huga&foo=bar">link</a></p>

Good:

<p>A &amp; B</p>
<p><a href="http://example.com/test.cgi?class=foo&amp;name=bar">link</a></p>

アンパサンドはいつでもエスケープしてしまう。

okuryu commented 9 years ago

<"などもあった方がいいのかなと思いました。 https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#RULE_.231_-_HTML_Escape_Before_Inserting_Untrusted_Data_into_HTML_Element_Content

hail2u commented 9 years ago

仕様としては、<がほぼ必須で、&は#か英数字が続くと必須、">'は状況に応じてということになってます。しかし、ベスト・プラクティスとしてはこの5種にしておいた方が良さそうですかね?

okuryu commented 9 years ago

そうですね。実際は必要ない場合もあるんですが、5種書いておいてもいいと思います。

momdo commented 9 years ago

okuryuさまも言われているように、検討するならその5種類になるかと。個人的には<&ついでに>は必ずエスケープするようにはしていますが、"'はエスケープしていないですね…5種類全部となると相当安全よりなイメージでそこまでする必要があるのか?と言われると知見がないです…。

hail2u commented 9 years ago

JavaScriptやサーバーでの動的な生成はともかく、静的なジェネレーター系(Markdown的なものやHTML編集アプリケーション)での生成については考えてやる必要があります。とするとコンテキストでの調節が必要になる"'も統一してエスケープした方がシンプルで、安定したHTMLに役立つと言えそうです。