2

.NET 4.0
VS 2012
IIS 7

さまざまなページのメールアドレスを取り込むアプリがありますが、ユーザーがいくつかの入力に直接コピー/貼り付けしていて、タイトルに記載されているエラーが発生していることがわかりました。例を次に示します。

"blah blah" <blah@blah.com>

明らかに、角かっこが問題を引き起こしています。検証を2.0に切り替えるだけでよいことはわかっていますが、切り替えたくないので、ここに私の質問があります。

  • ランタイムの反応を改善する方法はありますか?これが発生すると、非常に恐ろしいページを表示する代わりに、入力エラーとして扱い、ユーザーにメッセージを表示します(一般的な場合)。たとえば、私が話しているシナリオでは、エラーメッセージを表示できます。 <および>が電子メールアドレスで許可されていないことについて。私は保護が好きですが、誰かが潜在的に危険な入力を入力するたびに「おっと」ページが表示されるという考えは嫌いです。

  • 検証を緩和する場合:

    • ページごとにそれを行うことはできますか?私はそうは思わないが、完全性を求めている
    • ASP.NETは、これらのタイプの問題から手動で保護するためにどのようなツールを提供しますか?私は本当に危険な可能性のあるものの入力を調べるために何かを書くゲームに参加したくありません。
4

1 に答える 1

3

ページ見出しにValidateRequest="false"を入れることで、ページごとに検証を緩和できます。

次に、正規表現を使用して、次のように電子メールアドレスを検証できます。

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="Email" ErrorMessage="Enter a valid e-mail address" 
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" />

他のコントロールの場合、正規表現 "^ [^ <>] + $"を使用して、山かっこをチェックできます。実際には、クライアント(HTML / JavaScript)に出力するか、SQLステートメントに含める場合を除いて、「潜在的に危険な」ユーザー入力について心配する必要はありません。

または、ページにページレベルのエラーハンドラーを記述したり、Global.asaxにアプリケーションレベルのエラーハンドラーを記述したりすることもできます。

ページレベルのエラー処理: http: //msdn.microsoft.com/en-us/library/ed577840 (v = vs.100).aspx

アプリケーションレベルのエラー処理: http: //msdn.microsoft.com/en-us/library/24395wz3 (v = vs.100).aspx

このページには、ASP.NETでの要求検証の無効化に関する有用な情報が記載されています:http: //msdn.microsoft.com/en-us/library/hh882339 (v = vs.100).aspx

于 2012-12-15T19:13:59.857 に答える