私はpost on Meta SOに出くわしました。私はHTMLと属性のエンコーディングの微妙な違いを知りたいと思います。HTMLと属性のエンコーディング
答えて
HTMLエンコーディングは、HTMLマークアップで意味的に意味のある特定の文字を置き換えます。マークアップの解析に影響を与えずにユーザーに表示できる同等の文字を置き換えます。それぞれ、<
、>
、&
、および"
に置き換えられている。また、エンコーダは、同等のHTMLエンティティを上位の文字を置き換えることが
最も重要かつ明白な文字>は、<され、&、そして "エンコードするので、コンテンツが保存され、ページがASCII形式でブラウザに送信された場合でも適切にレンダリングされます。
HTML属性エンコーディングは、aを防ぐために重要な文字のサブセット文字列がHTML要素の属性を壊すことはありません。具体的には、通常、 "、&、および<であり、"
,&
および<
である。これは、属性やそのデータ、ブラウザーやHTMLパーサーによって解析され、解釈される方法が、HTML文書とその要素がどのように読み取られるかとは異なるためです。
、あなたは適切に(ユーザなど)外部ソースから文字列をサニタイズしたいので、彼らはあなたのページを破る、あるいはもっと重要なのは、マークアップやスクリプトを挿入しませんブラウザまたはプラットフォームの脆弱性を利用して、アプリケーションを変更または破棄したり、ユーザーのマシンに影響を与える可能性があります。
ページでユーザー生成コンテンツを表示する場合は、HTMLエンコードしてマークアップに表示すると、入力したすべての文字列がXSSや壊れたマークアップを気にせずにそのまま表示されます。
ユーザー生成コンテンツを属性内の要素(たとえば、リンク上のtooltip
)に添付する必要がある場合は、コンテンツが要素のマークアップを破らないようにencode属性を設定します。
属性エンコードを処理するためにHTMLエンコードに同じ機能を使用できますか?技術的には、はい。リンクしたメタ質問の場合、エンコードされたHTMLを取り出してデコードし、その結果を属性値として使用して、エンコードされたマークアップが文字通り表示されるように思えます。
HTML5は二重引用符で囲まれた単一引用符で囲まれた属性とquoteless属性をサポートしているため、属性でエスケープする文字のアドバイスは一般的ではありません。 onclickのようなjavascriptイベントハンドラでは、常に二重引用符で囲まれた属性を使用し、データを保持することはないと仮定します。 – Erlend
ここで属性のエンコードのコードをご覧ください:https://github.com/chrisisbeef/jquery-encoder/blob/master/src/main/javascript/org/owasp/esapi/jquery/encoder.js – Erlend
ちょっとした修正。 2番目の段落から:「具体的には、通常、「&」、「&」を「"」、「&」、「>」と置き換えます。「<< –
私はOWASP XSS Prevention Rules 1 and 2を見ることをお勧めします。
要約... HTML
ためルール1は、HTMLエンティティのエンコーディングで、次の文字をエスケープ
...
&
- >&
<
- ><
>
- >>
"
- >"
'
- >'
/
- >/
ルール2のHTML共通するのは、ASCII値& #xHH未満256を持つすべての文字をエスケープし、英数字を除き
属性。属性(または使用可能な場合は名前付きエンティティ)を使用して、属性の切り替えを防止します。このルールが非常に広い理由は、開発者が頻繁に属性を引用符で囲まないようにするためです。適切に引用された属性は、対応する引用符でのみエスケープできます。引用符で囲まれていない属性は、[space]%* +、 - /;を含む多くの文字で区切ることができます。 < => ^と|。
- 1. HTML属性とプロパティ
- 2. PHP:HTML属性エンコーディング/ JavaScriptデコード
- 3. HTML属性へのMVCモデル属性
- 4. カスタムHTML属性とjQuery
- 5. GridViewとHtmlエンコーディング
- 6. HTML必須属性
- 7. HTML img属性 "complete"
- 8. Text.Blazeのオプションのhtml属性
- 9. NSXMLParserとXML types = "html" HTMLエンコーディング
- 10. html属性でのgrailsエンコード
- 11. カスタムHTML属性のブラウザバージョンフロア
- 12. Wicketの動的HTML属性
- 13. VimのイタリックHTML属性
- 14. HTMLのonBlur属性とonChange属性の違いは何ですか?
- 15. HTMLデータ属性IE6サポート
- 16. HTMLスコープ属性 - WCAG 2.0 G196
- 17. HTML「リンク」(スタイルシート)disabled属性
- 18. データベースとの間で属性をシリアライズするときのBase64エンコーディング/デコード
- 19. python:クラスの属性とインスタンスの属性
- 20. htmlunitはカスタムHTML属性( "expando属性")で動作しますか?
- 21. NetBeans HTMLコードのヒント/属性の補完
- 22. HTML 5のイメージのアライメント属性
- 23. EditorForのためのHtml(5)属性
- 24. HTMLの複数のクラス属性
- 25. 動的HTML属性の更新
- 26. Javaのhtml属性を更新する
- 27. <HTML>タグのクラス属性?
- 28. Html有効な入力値の属性
- 29. html属性内のキャプチャ方法
- 30. HTML属性値の引用符?
何の違いがありますか?あなたの質問は、いくつかの言葉が欠けているようです。 – Dai
OPがと&orangesを比較している可能性があります。しかし私は類似点を見ることができません。 –