6

私たちのレガシー アプリケーションは当初、カスタマイズ可能なページの html タグを格納できるように設計されていました。このようなページのアイデアは、顧客が必要とする HTML を保存し、ある時点でこの HTML データをレンダリングする可能性があるということです。

このアプローチにより、ユーザーは任意の XSS を保存できました。現在の目標は、XSS の保存を許可しないポリシーを定義して適用することです。

いくつかの事前定義されたルールに基づいて、html をサニタイズできるいくつかのアプローチを検討しました。

しかし、どちらのアプローチも検証ではなくサニタゼーションに基づいています。したがって、基本的なシナリオは次のようになります。

  1. ユーザーが入力するデータを入力します
  2. ユーザー入力はサニタイズされ、生の (初期 - ステップ 1) ユーザー入力と等しいかどうかがチェックされます。
  3. 検証が失敗したと見なされる違いがある場合。

このアプローチは、新しいデータに対して機能します。レガシー データの場合、いくつかの問題が発生します。

  1. ユーザーのレガシー データに禁止された要素が含まれている場合、ユーザーは HTML コンテンツのわずかに変更されたバージョンを保存できません。
  2. 次のフローはユーザーを混乱させます。
    1. ユーザーは、新しく定義されたポリシーに関する禁止タグ/コンテンツを含むレガシー データを編集します。
    2. ユーザーはすべてのコンテンツを置き換えて保存します。
    3. ユーザーが何らかの理由で古いバージョンに戻すことを決定した
    4. 禁止されたタグ/コンテンツが含まれているため、ユーザーは以前のバージョンを保存できません。

したがって、次の質問が表示されます。

  1. 悪意のある html 要素と XSS ベクターのユーザー入力を検証する最善の方法は何ですか?
  2. レガシ データに関する前述の問題を解決するには、どのアプローチを使用できますか?
4

0 に答える 0