2016-11-24 15 views
-1

私は、ユーザーが一定期間ウェブサイトを生き生きとさせるウェブサイトを作っています。ユーザーがjavascript/html/cssをアップロードできるようにする

  • ユーザーがjavascript/html/css/imageを含む.zipファイルをアップロードします。
  • 許可されていない拡張子を削除するためにホワイトリストを使用してファイルをフィルタリングする>
  • 新しいサブドメインは、解凍されたファイルを含むランダムな名前で作成されます。
  • となりました。ユーザーは彼のデザインを見ることができます。

javascript/html/cssファイルをアップロードするとどのようなセキュリティ問題が発生する可能性がありますか?

+0

これを自分で実装しようとしないでください。コンテンツ管理システムを使用する。 – Barmar

答えて

0

すべてのファイルはセキュリティホールの可能性があります。 JavaScript、HTML、およびCSSファイルは、すべてがJavaScriptコードを含んでいる可能性があるため危険です。 JavaScriptコードを含むファイルをアップロードできるようにすることで、訪問者のブラウザで実行されるコードをアップロードできるようになります。

最新のブラウザでは、CSSファイルにJavaScriptコードを埋め込むことは実際の問題ではありません。しかし、IE6や7などの古いブラウザをサポートすると予想される場合は、CSSファイルも潜在的なセキュリティホールになります。

攻撃者が一般的に使用する手法は、クロスサイトスクリプティングまたはXSSです。基本的に、攻撃者は、訪問者がWebサイトに情報を送信するためのフォームや低セキュリティAPIを使用して、JavaScriptコードをWebサイトに挿入します。そのJavaScriptコードは他のすべてのユーザーによって実行され、機密情報を盗む可能性があります。 https://en.wikipedia.org/wiki/Cross-site_scripting

ここで、すべてのウェブサイトは異なるサブドメインに存在するため、実際には異なる起源を持つため、ブラウザによって、あるウェブサイトのJavaScriptが別のウェブサイトのクッキーを手にすることが防止されます。これは、同一生成元ポリシーと呼ばれ、そのここでは詳細に説明されていますhttps://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy

は、これらの悪質なJavaScriptファイルのいずれかが、次のコードを実行することにより、その起源を変えることができることを念頭に置いてクマを行います

document.domain = "yourdomain.com"; 

をと潜在的な脅威になる可能性があります。 また、同じ発信元ポリシーでは、Internet Explorerなどの一部のブラウザで動作が異なります。最も一般的なWebブラウザのドキュメントを読むのが理想的です。

+0

唯一の脅威はXSSでしょうか? – KendoClaw

+0

これは最も危険なものです。私がお勧めしたいのは、拡張子でファイルをチェックしないことですが、ファイルを分析して実際に何が見えるのか、あるいは何らかのバリデーションをパスすることで確認できます。優れたCSSパーサーが.cssファイルを解析できない場合は、CSSではありません。 JavaScriptパーサが.jsファイルを解析できない場合は、JavaScriptではありません。これにより、有効なファイルに対してより信頼性の高いフィルタが提供されます。 –

関連する問題