2009-04-03 18 views
3

私はユーザーがデータベース内の情報を参照したり変更したりできるAsp.NetプログラムUIを作成しています。このため、すべての形式の文字を使用できる必要がありますが、プログラムHTMLとSQL自体を安全に保つ必要があります。そのため、私は '<'などの危険な文字をhtmlコードで置き換え、テキストボックスの外で処理されている間に、ページロード時に発行される自己構築メソッドを使用しています。そこ)。Asp.Net Validaterequest False

私のジレンマ:これを行うには、トピックごとにValidaterequestパラメータを無効にする必要があります。プログラムは苦情を発行します。 Falseに設定した場合の結果はどうなりますか?

SQLクエリは、すでにparametirized、と私は、次のマークを除外している:

& # < > " ’ % @ = 

質問:私は、私は上記の文字を扱う場合でも、脅威のために開いているプログラムを残していますか?基本的に、これはイントラネットアプリケーションであり、少数の人しかプログラムにアクセスすることができません。それにもかかわらず、アクセスする情報はかなり重要なので、意図しない事故さえも防止する必要があります。私は文字通りValidaterequestものが何をしているのか全く分かりません。

編集:申し訳ありません。私はちょうど当初予定されていたようにこれで行くでしょう。

答えて

4

Validate Requestが探している主なものは<と>文字です。あなたのサイトを悪意のあるユーザーがスクリプトやHTMLをあなたのサイトに投稿するまであなたのサイトを開くのを止めるためです。

HTMLマークアップを取り除いたコードがうまくいれば、保存したデータを処理せずにウェブサイトに戻すことができない場合は、OKにしてください。

2

通常、特殊文字を置き換えることでユーザー入力を検証すると、通常は問題が増え、問題は実際には解決されません。これは、すべてのユーザーが、時には彼らは

& # < > " ’ % @ = 

などの特殊文字はまだASCII /バイナリ自動化された攻撃を行うためにCONVERT()関数を使用してもxp_コマンドを使用するか、または可能性が精通したユーザーを考えるの入力が必要になるかによって決まります。すべての入力をパラメータ化している限り、大丈夫です。

1

私は、この問題はSQLインジェクション攻撃だけでなく、クロスサイトスクリプティングとJS実行攻撃に関するものだと思います。 これを防ぐには、パラメータ化されたクエリのみに頼ることはできません。ユーザーが送信するhtmlの「サニタイズ」を行う必要があります。 htmlのようなツールが役立つかもしれません。

関連する問題