2011-07-18 28 views
1

私のプロジェクトは検索を実装しており(デフォルトのHTMLページから)、検索ページ(ASPXページ)にリダイレクトされ、検索文字列を使用して検索値が渡されます。言語が英語以外の言語(タイ語、キリル文字など)に設定されている場合、potentially dangerous Request.QueryString valueサーバーエラーが発生します。潜在的に危険なクエリ文字列を処理する

これをクライアント側から処理する方法はありますか?現在、私はページ自体からこれを処理する方法を見つけることができません(Page_LoadPage_PreInitはトリガーしません)。

は、ここで私はリダイレクトするために使用されるコードです:

function Search() { 
    var searchString = document.getElementById('txtSearch').value; 
    location.href = "/Search.aspx?search=" + searchString; 
} 
+0

はあなたのクエリ文字列を暗号化し、上の復号化しようとしていますリダイレクトされたページ? – TheGeekYouNeed

+0

まだ、検索ページにリダイレクトするコードを投稿しました。 – KaeL

答えて

2

ORあなたのURLをエンコードすることができます

はvarsの

encodeURIComponent追加:

function Search() { 
    var searchString = document.getElementById('txtSearch').value; 
    location.href = "/Search.aspx?search=" + encodeURIComponent(searchString); 
} 
+0

お返事ありがとうMarc – KaeL

2

あなたのデータは大体のコードのように見えるために起こっている場合は、うまくこの検証を無効にする必要があります。しかし、あなたは本当にである必要があります。特にXSSとSQLインジェクション攻撃を避けてください。あなたは、ページごとに無効にするには、ASPX validateRequest=falseに設定することができるはずです:web.configファイルで

<%@ Page validateRequest="false" ... 

またはグローバルあなたはどこにでもこれを必要とする場合。あなたにvalidateRequest="false"ネットページまたはWeb.configファイルを追加する

+0

ありがとう、私はその属性を試して、それが動作しています。これをコードビハインドから真に設定することは可能ですか?私が要求を検証し、それが有効であるとすれば、どのような攻撃も避けるために 'ValidateRequest'をtrueに設定することはできませんでした。 – KaeL

関連する問題