NewPasswordRegularExpression bug in ChangePassword control

D

Dmitry Duginov

Hi,

I am trying to enforce the following password strength rules:

8 characters minimum
including at least 2 digits
and at least one non-alphanumeric character

Web.config fragment:

<membership defaultProvider="XYZMembershipProvider">
<providers>
<add name="XYZMembershipProvider"
connectionStringName="XYZMembershipConnection"
applicationName="XYZ"
passwordStrengthRegularExpression="(?=.{8,})(?=(.*\d){2,})(?=(.*\W){1,})"
enablePasswordReset="false"
requiresUniqueEmail="true"
passwordFormat="Hashed"
type="System.Web.Security.SqlMembershipProvider"/>
</providers>
</membership>

On provider level it works fine, but when I'm trying to place the same Regex
(?=.{8,})(?=(.*\d){2,})(?=(.*\W){1,})
into NewPasswordRegularExpression property of ChangePassword control,
client-side validation fails for valid passwords that pass server-side
validation when NewPasswordRegularExpression is not filled.

Control markup is below. It looks like javascript-based regex parsing does
not work the same way as its client side peer. Any suggestions?

<asp:ChangePassword ID="ChangePassword1" runat="server"
NewPasswordRegularExpressionErrorMessage="New password must have at
least 8 characters, including two numbers and one special character"
PasswordHintText="Please enter a password at least 8 characters
long, containing two numbers and one special character"
NewPasswordRegularExpression="(?=.{8,})(?=(.*\d){2,})(?=(.*\w){1,})">
</asp:ChangePassword>

Regards,
Dmitry
 
G

Guest

Hi,

I am trying to enforce the following password strength rules:

8 characters minimum
including at least 2 digits
and at least one non-alphanumeric character

Web.config fragment:

  <membership defaultProvider="XYZMembershipProvider">
   <providers>
        <add name="XYZMembershipProvider"
        connectionStringName="XYZMembershipConnection"
        applicationName="XYZ"
        passwordStrengthRegularExpression="(?=.{8,})(?=(.*\d){2,})(?=(.*\W){1,})"
        enablePasswordReset="false"
        requiresUniqueEmail="true"
        passwordFormat="Hashed"
        type="System.Web.Security.SqlMembershipProvider"/>
   </providers>
  </membership>

On provider level it works fine, but when I'm trying to place the same Regex
(?=.{8,})(?=(.*\d){2,})(?=(.*\W){1,})
into NewPasswordRegularExpression property of ChangePassword control,
client-side validation fails for valid passwords that pass server-side
validation when NewPasswordRegularExpression is not filled.

Control markup is below. It looks like javascript-based regex parsing does
not work the same way as its client side peer. Any suggestions?

    <asp:ChangePassword ID="ChangePassword1" runat="server"
        NewPasswordRegularExpressionErrorMessage="New password must have at
least 8 characters, including two numbers and one special character"
        PasswordHintText="Please enter a password at least 8 characters
long, containing two numbers and one special character"
        NewPasswordRegularExpression="(?=.{8,})(?=(.*\d){2,})(?=(.*\w){1,})">
    </asp:ChangePassword>

Regards,
Dmitry

According to MSDN the pattern should look as follows:

NewPasswordRegularExpression = '@\"(?=.{8,})(?=(.*\d){2,})(?=(.*\W)
{1,})'

http://msdn2.microsoft.com/en-us/li...ngepassword.newpasswordregularexpression.aspx

Hope this helps
 
D

Dmitry Duginov

Hi,

I am trying to enforce the following password strength rules:

8 characters minimum
including at least 2 digits
and at least one non-alphanumeric character

Web.config fragment:

<membership defaultProvider="XYZMembershipProvider">
<providers>
<add name="XYZMembershipProvider"
connectionStringName="XYZMembershipConnection"
applicationName="XYZ"
passwordStrengthRegularExpression="(?=.{8,})(?=(.*\d){2,})(?=(.*\W){1,})"
enablePasswordReset="false"
requiresUniqueEmail="true"
passwordFormat="Hashed"
type="System.Web.Security.SqlMembershipProvider"/>
</providers>
</membership>

On provider level it works fine, but when I'm trying to place the same
Regex
(?=.{8,})(?=(.*\d){2,})(?=(.*\W){1,})
into NewPasswordRegularExpression property of ChangePassword control,
client-side validation fails for valid passwords that pass server-side
validation when NewPasswordRegularExpression is not filled.

Control markup is below. It looks like javascript-based regex parsing does
not work the same way as its client side peer. Any suggestions?

<asp:ChangePassword ID="ChangePassword1" runat="server"
NewPasswordRegularExpressionErrorMessage="New password must have at
least 8 characters, including two numbers and one special character"
PasswordHintText="Please enter a password at least 8 characters
long, containing two numbers and one special character"
NewPasswordRegularExpression="(?=.{8,})(?=(.*\d){2,})(?=(.*\w){1,})">
</asp:ChangePassword>
According to MSDN the pattern should look as follows:
NewPasswordRegularExpression = '@\"(?=.{8,})(?=(.*\d){2,})(?=(.*\W)
{1,})'

Hope this helps

Of course it it doesn't. I gave it a try. No difference. If you look
carefully, this regex additionally forces any password to begin with
quotation mark, nothing else. But the validation fails anyway, even if I
specify "password!99.

Let's hear what Microsoft folks think about this...

D.
 
S

Steven Cheng[MSFT]

Hi Dmitry,

As for the CreateUserWizard and its password regex expression, I've
performed some search and it seems there hasn't recorded an existing issue.
For the behavior you mentioned, would you also paste me a test regex
expression and some password patterns? I'd do some tests on my local side
to confirm the behavior.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead


This posting is provided "AS IS" with no warranties, and confers no rights.

--------------------
From: "Dmitry Duginov" <[email protected]>
References: <[email protected]>
 
D

Dmitry Duginov

Steven Cheng said:
Hi Dmitry,

As for the CreateUserWizard and its password regex expression, I've
performed some search and it seems there hasn't recorded an existing
issue.
For the behavior you mentioned, would you also paste me a test regex
expression and some password patterns? I'd do some tests on my local side
to confirm the behavior.

Steven, the complete information to reproduce the bug has been included into
original message below. But of course I can copy and paste it, no problem.

<asp:ChangePassword ID="ChangePassword1" runat="server"
NewPasswordRegularExpressionErrorMessage="New password must have at least 8
characters, including two numbers and one special character"
PasswordHintText="Please enter a password at least 8 characters long,
containing two numbers and one special character"
NewPasswordRegularExpression="(?=.{8,})(?=(.*\d){2,})(?=(.*\w){1,})">
</asp:ChangePassword>

Example of the password: password!99

D.
 
D

Dmitry Duginov

MSDN states that:

Client-Side Validation for ASP.NET Server ControlsThere are a few minor
differences associated with client-side validation: ... Client-side regular
expressions differ in small details from the regular ...


But the specific differences between client-side and server side Regex
implementation in ASP.NET is nowhere to be found. Now I recall I used to
have similar problem back in 2003 - the same Regex worked differently on
client and server side. And Microsoft reps told "maybe it will be fixed in
the next version". It's been five years since then...

Could you find out what are those "small, minor differences"?

D.
 
J

Jesse Houwing

Hello Dmitry,
MSDN states that:

Client-Side Validation for ASP.NET Server ControlsThere are a few
minor differences associated with client-side validation: ...
Client-side regular expressions differ in small details from the
regular ...

But the specific differences between client-side and server side Regex
implementation in ASP.NET is nowhere to be found. Now I recall I used
to have similar problem back in 2003 - the same Regex worked
differently on client and server side. And Microsoft reps told "maybe
it will be fixed in the next version". It's been five years since
then...

Could you find out what are those "small, minor differences"?

Clientside uses the VBScript/JavaScript/ECMAScript implementation of Regex
(same as the Windows Scripting Host).

Serverside uses the .NET implementation of regex (with the ECMAScript compliace
turned on if I'm not mistaking).

For both of these is a separate set of documentation available and I do not
expect these differences to be removed ever/at all, as there are too many
3rd party browsers that have built in support for the same VBScript/JavaScript/ECMAScript
implementation for such a change to work without serious cooperation between
all browser vendors.

I find the following website a handy reference to look up such changes/differences:
http://www.regular-expressions.info/tools.html
 
S

Steven Cheng

Hi Dmitry,

As Jesse has mentioned, the difference is something like the script
component's string regex support and .NET's regex support. The site
provided in his message provide some information on regex support of
different tools/platform.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead


This posting is provided "AS IS" with no warranties, and confers no rights.

--------------------
 
D

Dmitry Duginov

Steven Cheng said:
Hi Dmitry,

As for the CreateUserWizard and its password regex expression, I've
performed some search and it seems there hasn't recorded an existing
issue.
For the behavior you mentioned, would you also paste me a test regex
expression and some password patterns? I'd do some tests on my local side
to confirm the behavior.

Steven, it's been two weeks.

Did you get anything related to this issue???

D.
 
S

Steven Cheng

Hi Dmitry,

Sorry for keep you waiting. I've done some further research previouly and
haven't got any useful information so far. I'd like to involve some further
resource to help you on this issue. Would you send me a mail offline
through the following address:

"stcheng"+"@"+"microsoft.com"

I'll request some further information from you so as to allocate further
resource to help you.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead


This posting is provided "AS IS" with no warranties, and confers no rights.

--------------------
From: "Dmitry Duginov" <[email protected]>
References: <[email protected]>
<c23f5daa-905b-41bb-86bb-b6214ec25970@q77g2000hsh.googlegroups.com>
Subject: Re: NewPasswordRegularExpression bug in ChangePassword control
Date: Tue, 26 Feb 2008 12:08:10 -0500
Steven Cheng said:
Hi Dmitry,

As for the CreateUserWizard and its password regex expression, I've
performed some search and it seems there hasn't recorded an existing
issue.
For the behavior you mentioned, would you also paste me a test regex
expression and some password patterns? I'd do some tests on my local side
to confirm the behavior.

Steven, it's been two weeks.

Did you get anything related to this issue???

D.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top