0

クライアントがU/Pでログインするためのサイトがあります。ユーザー名はメールアドレスである必要があるため、エラーログから、一部のユーザーが誤ってメールをフォーマットで貼り付けていることに気づきました。

<My Name> myemail@test.com

pwdフィールドに。これに気付いたのは、.NETが<を含むために潜在的に危険なRequest.Formに関するエラーをスローするためです。「<」を「<」に置き換えることができるjavascript関数があり(その後のスペースはエラーを引き起こしません)、それをパスワードに適用したいと思います-とにかく正しくありませんが、少なくともそれらは危険なキャラクターについての大きくて醜いメッセージの代わりに、素敵な「無効なパスワード」メッセージ。もちろん、パスワードなので、最初にタイプをテキストに変更しない限り、置換を行うことはできません。これが私がjavascriptで試したことです:

    function replaceSuspectChars(that)
{
    that.type = 'text'; 
    //Find '<' not followed by a space, and replace it with a '< '
    var text = that.value;
    text = text.replace(/</g, "< ");
    text = text.replace(/<  /g, "< ");
    that.value = text;
    that.type = 'password'; 
}

これは、IIS7を実行しているIEのローカルマシンで正常に機能しました。しかし、IIS6の本番環境では、「typeプロパティを取得できませんでした」というエラーが発生します。javascriptを取得してテキストボックスの種類を変更したり、パスワードフィールドの問題のある文字を置き換えたり、危険な文字エラーを回避したりする方法はありますか?ポストバックコードが実行される前に危険な文字エラーが常に表示されるため、コードビハインドコードを使用できません。

ご協力いただきありがとうございます。-VG

4

1 に答える 1

0

"<" を許可したい場合validateRequest="false"は、.aspx ページの Page 属性で設定できます。これにより、.net が「<」を許可するようになります。そうすれば、醜い死の黄色いページが表示されず、素敵なエラーメッセージを表示できます.

ただし、セキュリティ上の理由から、validateRequest を false に設定する必要があるかどうかはわかりません。これにより、.Net がスクリプト インジェクション攻撃をチェックできなくなるからです。それは考慮すべきことです。

見る:

  1. http://www.asp.net/whitepapers/request-validation
  2. ASP で ValidateRequest を false に設定する方法の使用
  3. Asp.Net Validaterequest False
于 2013-01-17T16:18:11.653 に答える