6

ユーザーがリモートコンピューターで基本的なファイルシステム操作 (ファイル/ディレクトリの作成、ファイル/ディレクトリの削除、ファイルシステムのナビゲート) を操作して実行できる Web ページを作成しています。Webページは基本的なHTML(UTF-8エンコーディング)とJavascriptです。この Web ページを XSS 証明する必要があります。

ユーザー入力 (DOM ベースの XSS から保護するため) とファイル名情報 (保存された XSS から保護するため) のすべての英数字以外の文字を Javascript を使用してエスケープする (これはパーセントでエンコードされた 16 進値を出力する) で十分でしょうか?

基本的に、英数字の入力のみをホワイトリストに登録しています。また、パーセントでエンコードされた 16 進値を使用しているため、UTF エンコーディングの脆弱性は存在しないはずです。

このメカニズムのセキュリティの抜け穴を思いつく人はいますか?

4

6 に答える 6

1

注意点:

  • @Aloが言ったように、これはサーバー側で行う必要があります。これは、攻撃者がjavascriptを完全にバイパスして、悪意のある入力をサーバーに直接送信するのを防ぐためです。ただし、ご指摘のとおり、DOMベースのXSSを防ぐために、これは(特定の状況では)クライアント側でも実行する必要があります。
  • ページがUTF-8であるとおっしゃいましたが、メタタグやHTTPヘッダーなどを使用してこれを適用する必要があります。そうしないと、UTF-7攻撃に対して脆弱になります。
  • スペース-それは英数字であるかどうか?(一部にはそれが含まれます...)状況によっては、スペースと文字だけを使用して、本格的なXSS攻撃を仕掛けることができます。

HTMLエンコーディングはあらゆる種類のXSS攻撃を防止しますか?に対する私の回答の詳細を確認してください。 あなたはそこであなたが知る必要があるすべてを見つけるでしょう。

于 2009-05-16T20:11:10.953 に答える
1

なされた他のポイントを補足するためのメモ:

GETとPOSTを正しく使用していることを確認してください。これは、多くのWebサイトで最も単純な種類のセキュリティホールです。

ユーザー入力によってデータベースへの変更がトリガーされる場合は、必ずPOSTを使用してください。

表示する情報を取得する場合は、ユーザーGETのみ。

于 2009-05-16T20:20:23.100 に答える