asp.Netのvalidaterequestプロパティとセキュリティ

2198 ワード

皆さんがこの属性に気づいたかどうか分かりませんが、ここではこの属性の役割と私たちがこれからどのように使うべきかについて議論しましょう.
まず、このプロパティについて説明します:(注:このプロパティは.net 2.0で追加されました!)
  1.名前空間:System.Web.Configuration
  2.プログラムセット:System.Web(system.web.dll)
  3.存在するクラス:pagesSection
上で私は大体この属性を理解して、次に具体的にこの属性を分析して、この属性はクライアントのユーザーの入力を検証するために使用して、ユーザーの入力の中で危険な文字があるかどうかを検証するために使用して、この属性のデフォルト値はtrueで、マイクロソフトのこれはaspを高めるためです.Netプログラムのセキュリティのため、多くのプログラマーはハッカーの攻撃をどのように防御するか分からないとしても、asp.Netのいくつかのデフォルトの属性などの内容はすでに安全に対して制御して、これもなぜasp.Netのプログラムが相対的に安全な理由!
この属性のデフォルト値がtrueである以上、asp.Netページの返信は頻繁で、ユーザーのインタラクションの場所がなければasp.Netは毎回厳しくしなければならないのではないでしょうか.そうすれば、システムの実行時間を損なう可能性があります.クライアントのインタラクションがなければ、aspです.Netはこれがマイクロソフトのエンジニアの問題であることを検証することができますか?私たちにとって、クライアントのインタラクティブな場所がなければ、私はこの属性をfalseに設定すべきだと感じています.そうすれば、マイクロソフトのエンジニアがどのように設計しても、私たちのプログラム自体には何の影響もありません.
しかし、ユーザーと対話する必要がある場合、私たちはそのデフォルト値を使用しなければなりませんが、私たちが想像していたほど簡単ではなく、完璧ではありません.ユーザーがhtmlエディタを使用しているとき、自分が提出した文字にはなどの文字があります.このように、プログラマーはvalidaterequest属性を閉じなければなりません.このとき、私たちはどのようにaspを制御すればなりませんか.Netページのセキュリティ性能は?
もちろん、この場所では、すべての危険な文字をフィルタリングすることができます.これにより、いくつかのセキュリティが向上する可能性がありますが、ユーザーの入力が漏れることを防止します.これにより、セキュリティに問題が発生します.逆に、私たちがどれだけの特殊文字を提出する必要があるのかを考えて、私たちが提出した特殊文字をエスケープしたり、交換したりすることができます.これによりvalidaterequestのプロパティをtrueに設定することができ、プログラムのセキュリティ問題を解決し、私たちのニーズを満たすことができます.
时にはユーザーとインタラクティブな时、ユーザーは避けられない特殊な文字を入力する时、私达が设定したvalidaterequestの値はtrueなので、ページはいかなるヒントを与えない前提の下で、直接1ページの间违った情报を出力して、このようにユーザーの误解を招くかもしれなくて、彼らは私达のウェブサイトが问题が発生したと思って、ユーザーは彼が不法な文字を入力したことを思い付くことができません!このような状況に対して私たちはどうすればいいのでしょうか.
幸いマイクロソフトのエンジニアたちはpageでPageを提供しました.Errorの処理イベントは、異常なキャプチャコードを以下のように使用することができます.protected void Page_Error(object sender, EventArgs e)
    {
       Exception ex = Server.GetLastError();
       if (ex is HttpRequestValidationException)
       {
        Response.Write(" !");
        Server.ClearError();
        }
     }
このようなヒントがあれば、ユーザーに与える体験は何倍になるか分からないかもしれません.
弟が最近ウェブサイトの楽屋をしているので、この小さな問題に出会った.上の方がよく書いてあるのを見て、回しました.
ここではhttp://tech.ddvip.com/2009-03/1235963787110082.htmlから