私はやや関係のある質問div contenteditable, XSSを読んだことがありますが、答えはcontenteditableのXSSの安全性についてはあまり強調していません。特に、偶発的な(クロスサイトスクリプティングとの比較)私は、もちろん、私はユーザー入力をサーバー側で消さなければならないことに気付いています。HTML5のcontenteditable属性はXSSに対して安全ですか?
TL.DR.:ユーザーがページを介して外部スクリプト(クリップボードから貼り付けられたデータを介して)を導入する危険性がないことを確認できますか?contenteditable
?スペックは、contenteditableに貼り付けられたマークアップがDOMに挿入される前に消されていることを確認していますか?
私は偶然contenteditable
タグに能動素子を挿入することは不可能であると思われることを、私がテストした二つの主要なブラウザ、クロム/ ChromeとFirefoxの上でそれに気づきました。
- ユーザーをコピーして、1つのWebページからのDOM要素の選択と別のサイトに
contenteditable
要素に挿入します:私はインスタンスのことを想像しただろうなaccedental挿入するための一例。 - ユーザは(Linuxのコマンドラインで)
echo "<b onclick='alert("XSS");'>click me</b>" | xclip -t text/html -selection "clipboard"
と貼り付けて、contenteditable
に貼り付けます。
能動素子は、のようなものであろう:例えばようなJavaScriptのhref属性を含むonclick="alert(\"XSS\");"
<script>
- HTMLマークアップ
<a href="javascript:alert(\"XSS\")"> click me </a>
私の質問は、contenteditableが通常のXSSベクターを貼っていることから幾分安全だと思っています。
私はそれがどちらも明示的contenteditable
はどちらも、それが許されることを、がページのDOMに挿入されている任意の能動素子を防ぐ必要があることを言及しないところ、いくつかのspecs/refs/whateverを読みました。 contenteditable
に挿入されている外部のJavaScriptを危険にさらしたくないので、私はcontenteditable機能を使うべきかどうか疑問に思う。このXSSの安全性に答えてcontenteditable
がこの質問の中核です。
アップデートはcontenteditable
属性類似した機能文書designMode
とは対照的に 、(https://www.w3.org/TR/2008/WD-html5-20080610/web-browsers.html#designModeScriptBlockedを参照)についてのJavaScriptが無効になっている(したがって、XSSを防ぐ)、特定のようです。
UPDATE 2 MDNに引用された最新の参照/仕様はcontenteditable
がペースト経由で悪質なJavaScriptを導入しないことを提供していいかなる保証についての奇妙な無関心であるhttps://html.spec.whatwg.org/multipage/interaction.html#contenteditable です。
サーバー側の入力をサニタイズする限り、JavaScriptを「contenteditable」に貼り付ける理由は問題ではありません。誰でもDevツールを開き、XSS攻撃を防ぐためにサーバ側が設定されていない場合は、XSS攻撃に十分なJavaScriptをページ上で実行できます。 –
@DeepakKamat悪意のあるスクリプトを貼り付けると、このpriveledgesを継承すると、問題があると思うでしょう(ユーザーがログインしていて、コンテンツを削除するような特権があると仮定します)。あなたは何と言うでしょう?さらに、XSSの安全性はユーザーデータの安全性(入力データなど)を悪意のあるスクリプトでカバーしています。可能であれば、「contenteditable」を介して悪質な第三者に送信します。確かにそのサーバーは妥協ではないが、私の理解でもXSSはユーザーアカウント/データを攻撃するので、私の懸念は – humanityANDpeace
なぜあなたは9年前から仕様を現在の仕様の代わりに読んでいるのですか? – BoltClock