1

クロス サイト スクリプティングの脆弱性を含むソース コードがいくつかあります。サーバー側 Javascript および従来の ASP (IIS 7.0) を実行しているサーバーにブラウザーがデータを送信するときに発生する入力検証はありません。

Request.Form("foo")私の質問は、サニタイズ関数も呼び出して禁止されている JS/HTML を取り除くことができるように、オブジェクト/メソッドをオーバーライドする方法はありますか? Request.Formどこでも呼び出されるすべてのファイルで検索と置換を行いたくありません。もっとエレガントなものを期待していました。

任意の提案をいただければ幸いです。

4

2 に答える 2

2

Request.Formメンバーの変更はできないと思います。

部分的な解決策としてできることは、すべてのページで最初に実行されるコードを作成することです (たとえば、ディレクティブを使用してinclude) 。)。この解決策は部分的なものです。入力を実際にサニタイズするわけではなく、疑わしいテキストが見つかったときに実行を中止するだけだからです。Request.FormRequest.QueryStringResponse.End

別のオプション:と並行して配列を作成しますRequest.Form。Request.Form と同じメンバーをこの配列に入力しますが、今回はサニタイズします。次に、コード ベース全体に対して検索と置換をすばやく実行しRequest.Form、カスタム配列変数に変更します。

于 2012-04-24T17:23:46.547 に答える
1

Requestオブジェクト全体を別の COM オブジェクトに置き換える方法はありますが、それは非常識な解決策であり、使用するすべての ASP ファイルFormに共通のトップ インクルード ファイルが含まれている必要があります。Requestオブジェクトまたはそのメンバーの 1 つをアプリケーション レベルでグローバルに置き換えることはできません。

問題の正しい解決策は、「あらゆる場所のすべてのファイルで検索と置換を行いたくない」というあなたの声明にもかかわらず、そのようなグローバルな置換を実行することです。

存在する .asp ファイルの数にもかかわらず、そのコストは、単純なプログラムを作成してフォルダー ツリー内の各 ASP ファイルを開き、インクルード行を追加してRequest.Form.

于 2012-04-25T11:48:10.363 に答える