ホストされたCMSのHTMLマークアップをサニタイズする必要がありますか?
-
05-07-2019 - |
質問
顧客向けにホストされたCMSのようなサービスの開始を検討しています。
それがそうであるように、それは顧客が彼らのサイトを訪れるために来るだれでもに提供されるテキストを入力することを要求するでしょう。大きなテキストブロックに対して、おそらくWMD(SOが使用するライブマークダウンプレビュー)と組み合わせて、Markdownを使用することを計画しています。
今、htmlへの入力をサニタイズする必要がありますか? 「CMS」を編集している人はほんの一握りで、すべての有料の顧客がいることを考えると、悪いHTMLを取り除くべきでしょうか、それともただ実行させるべきでしょうか?結局のところ、それは彼らの「サイト」です
編集:私がそれを行う主な理由は、独自のJavaScriptを使用させ、独自のcssおよびdivを持たせることと、出力用ではないことです
解決
入力をサニタイズしないのはなぜしないのですか?
そうしなければ、あなたは災難を招いている-あなたの顧客か自分自身、あるいはその両方に。
他のヒント
あなたの質問は尋ねます:
"編集:私がそれを行う主な理由は、独自のJavaScriptを使用させ、独自のcssとdivを持たせ、出力用ではないものにすることです。
ユーザーが任意のJavaScriptを提供できるようにした場合、入力のサニタイズは労力に値しません。クロスサイトスクリプティング(XSS)の定義は、基本的に「ユーザーはJavaScriptを提供でき、一部のユーザーは悪い」というものです。
現在、一部のWebサイトでは、ユーザーがJavaScriptを提供できるようになっており、次の2つの方法のいずれかでリスクを軽減しています。
- 個別のユーザーのCMSを別のドメインでホストします。 BloggerとTumblr(例:myblog。 blogspot .comとblogger.com)は、ユーザーのテンプレートが他のユーザーのCookieを盗むのを防ぐためにこれを行います。あなたは何をしているのかを知っている必要があり、ルートドメインの下にユーザーコンテンツをホストしないでください。
- ユーザーコンテンツがユーザー間で共有されない場合、悪意のあるユーザーがどのスクリプトを提供するかは重要ではありません。ただし、CMSは共有に関するものであるため、ここではおそらく適用されません
機能するブラックリストフィルターはいくつかありますが、機能するのは今日のみです。 HTMLの仕様とブラウザは定期的に変更されるため、フィルターのメンテナンスはほとんど不可能です。ブラックリストは、セキュリティと機能の両方の問題を抱える確実な方法です。
ユーザーデータを扱うときは、常に信頼できないものとして扱います。製品の初期段階でこれに対処せず、シナリオが変更された場合、ユーザーを混乱させることなくXSSを防ぐために戻ってすべてのXSSポイントを見つけたり製品を変更することはほとんど不可能です。
また、不満を抱いている従業員、顧客を越えた攻撃、またはその他のばかげた行動を再び保護します。
ユーザーまたは視聴者に関係なく、常にサニタイズする必要があります。
少なくともエントリを解析し、特定の「安全」なもののみを許可するHTMLタグのサブセット。
入力は常にサニタイズする必要があると思います。ほとんどの人がCMSを使用するのは、自分のWebサイトを最初から作成したくないため、ページを編集するための簡単なアクセスが必要なためです。これらのユーザーは、サニタイズされるテキストを入力しようとはしないでしょうが、それに対して保護することでユーザーを保護しています。