web-dev-qa-db-ja.com

Stack ExchangeサイトはXSSからどのように保護されますか?

ユーザーはHTMLマークアップを使用して質問やコメントを投稿できるため(おそらく<script>タグ)、Stack ExchangeサイトはXSS攻撃に非常にさらされます。彼らはこれからどのように保護しますか?

11
Tom Grant

一般的なコメントの場合、スクリプトタグは適切に エスケープ であるため、実際のコードではなくテキストとして解釈されます。この場合、その種のものはHTMLエンコーディングと呼ばれるものを介して処理され、<script>タグは&lt;script&gt;に変換され、コードとして解釈されるのではなくテキスト文字列としてレンダリングされます。

とはいえ、StackOverflowは、人々の回答で実行可能なJavaScriptを許可する新機能に取り組んできました: http://blog.stackoverflow.com/2014/09/introducing-runnable-javascript-css-and-html-code -snippets /

私が強調したい記事のセキュリティポイントのいくつか:

スタックスニペットは安全ですか?

はい、一般的にウェブと同じくらい安全です。 JavaScriptが有効になっているサイトを閲覧するときよりも危険にさらされることはありません。そうは言っても、スニペットはブラウザーでクライアントコードを実行しているため、別のユーザーによって提供されたコードを実行するときは常に注意が必要です。サイトからスニペットを分離して、プライベートStack Exchangeデータへのアクセスをブロックします。

•HTML5サンドボックス化されたiframeを使用して、さまざまな形式の悪意のある攻撃を防止しています。

•Snippetsを外部ドメイン(stacksnippets.net)にレンダリングして、同一起点ポリシーが有効になっていないことを確認し、スニペットがログインセッションまたはCookieにアクセスしないようにします。

私たちのサイトの他のすべての側面と同様に、スタックスニペットは最終的にコミュニティによって管理されます。ユーザーは引き続き無限ループやポップアップなどの迷惑な動作を作成するコードを記述できるため、大幅に反対票が投じられている投稿ではスニペットを無効にします(スコアはスタックオーバーフローで-3未満、メタで-8未満)。無効にする必要があると思われる不正なコードを見つけた場合は、投稿に反対票を投じてください。有害であることが意図されたコード(フィッシングの試みなど)が見つかった場合は、モデレーターの注意を促すためにフラグを立てる必要があります。

28
Greg

これは、ユーザーが入力したデータをサニタイズし、画面に表示するための安全な形式に変換することによって行われます。本質的には、ユーザー入力を受け取り、特殊文字(<、>、/、\など)をhtmlエンティティに変換します。これにより、Webページに表示しても無害になります。

3
willc