私は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. PHP:HTML属性エンコーディング/ JavaScriptデコード
- 2. HTML属性とプロパティ
- 3. HTML属性へのMVCモデル属性
- 4. カスタムHTML属性とjQuery
- 5. HTML、属性と注文
- 6. HTMLタグの属性属性をSublime Textと似ています
- 7. GridViewとHtmlエンコーディング
- 8. PHP/HTMLフォームアクション属性
- 9. HTML必須属性
- 10. HTML img属性 "complete"
- 11. NSXMLParserとXML types = "html" HTMLエンコーディング
- 12. Text.Blazeのオプションのhtml属性
- 13. VimのイタリックHTML属性
- 14. Wicketの動的HTML属性
- 15. HTML属性のVue.JSデータ
- 16. HTML href属性の解析
- 17. concat html属性のThymeleaf値
- 18. html属性でのgrailsエンコード
- 19. カスタムHTML属性のブラウザバージョンフロア
- 20. Htmlタグ属性インデントのベストプラクティス?
- 21. JSONをhtml属性として渡す
- 22. 「HTML属性」パラメータとは何ですか?
- 23. HTMLリンクでtitle属性とは何か
- 24. xml:<html>のタグ属性のlang属性SEO?
- 25. HTMLのonBlur属性とonChange属性の違いは何ですか?
- 26. データベースとの間で属性をシリアライズするときのBase64エンコーディング/デコード
- 27. htmlデータ属性を出力するためのカスタムモデル属性
- 28. 返されたhtmlコードの属性参照渡し値属性
- 29. HTMLスコープ属性 - WCAG 2.0 G196
- 30. HTML画像タグsrc属性
何の違いがありますか?あなたの質問は、いくつかの言葉が欠けているようです。 – Dai
OPがと&orangesを比較している可能性があります。しかし私は類似点を見ることができません。 –