2011-02-25 15 views
27

Estoy usando WebMatrix y he creado un sitio web basado en el "StarterSite". En este sitio inicial, obtienes una buena disposición básica, incluidas las páginas de registro, inicio de sesión, contraseña olvidada, etc.WebMatrix WebSecurity PasswordSalt

Me di cuenta de que en la base de datos la tabla "páginas web_membresía" tiene una columna llamada "PasswordSalt". Después de crear algunas cuentas de usuario nuevas, esta columna siempre permanece en blanco. Así que supongo que no se usa ninguna contraseña (ni siquiera una predeterminada).

Obviamente esta no es la mejor práctica, sin embargo, parece que no encuentro ninguna documentación que me diga cómo configurar o administrar la contraseña.

¿Cómo puedo establecer la contraseña de sal con WebSecurity Helper?

Respuesta

36

La respuesta anterior da la impresión de que no se aplica salazón al usar WebSecuritySimpleMembershipProvider.

Eso no es cierto. De hecho, el campo de sal de la base de datos no se utiliza, sin embargo, esto no indica que no se haya generado sal al calcular la contraseña.

En WebSecurity s SimpleMembershipProvider la PBKDF2 algo que se use, la sal aleatorio se genera por el StaticRandomNumberGenerator y se almacena en el campo de la contraseña con el hash:

byte[] outputBytes = new byte[1 + SALT_SIZE + PBKDF2_SUBKEY_LENGTH]; 
Buffer.BlockCopy(salt, 0, outputBytes, 1, SALT_SIZE); 
Buffer.BlockCopy(subkey, 0, outputBytes, 1 + SALT_SIZE, PBKDF2_SUBKEY_LENGTH); 
return Convert.ToBase64String(outputBytes); 
+6

Aquí hay un post que entra en más detalles: http://www.mikesdotnetting.com/Article/200/The-SimpleMembershipProvider-Secure-Passwords-And-The-Crypto-Helper – Bryan

+0

Según lo mencionado por [Mike Brind] (https://www.mikesdotnetting.com/article/200/the -simplemembershipprovider-secure-passwords-and-the-crypto-helper), Simple membershipProvider actualmente usa hash salado. Pero la sal está basada en el valor hash. La contraseña puede ser corregida por ** System.Web.Helpers.Crypto.HashPassword (contraseña) ** y se puede comparar con la cadena de contraseña simple a través de ** System.Web.Helpers.Crypto.VerifyHashedPassword (hash, contraseña) ** –

4

A partir de la versión RTM de WebMatrix/ASP.NET Web Pages, la característica/columna de sal no se utiliza.

Si usted abre la fuente de las páginas Web, verá las clases db llenas de referencias como

INSERT INTO [" + MembershipTableName + "] (UserId, [Password], PasswordSalt 

...

VALUES (uid, hashedPassword,String.Empty /* salt column is unused */ 

acortados para dar énfasis

Definitivamente hay formas de anular e implementar este comportamiento, primero:

  • System.WebData.SimpleMembershipProvider.CreateAccount override()

o

  • extender con System.WebData.SimpleMembershipProvider.CreateAccountWithPasswordSalt()

no va a entrar en detalles sin embargo, a menos que usted lo solicite, ya que su uso de WebMatrix y una plantilla sugiere que probablemente no quiera meterse con la reescritura de una tonelada de su propio código C#/ASP para este proyecto.

Cuestiones relacionadas