tutorial net mvc asp asp.net asp.net-mvc

tutorial - mvc asp.net c#



Cómo elegir un valor de sal para ValidateAntiForgeryToken (2)

La ficha anti-falsificación acepta un valor de sal. ¿Hay alguna preocupación de seguridad con respecto a la elección de la sal, como

  • requisitos de longitud mínima
  • criptográficamente fuerte
  • Mezcla de caracteres alfanuméricos y otros (como la de las contraseñas)

Además, ¿el cliente puede ver el valor de sal? Mirando el código fuente, parece estar anteponiendo el valor de sal a la cookie.


El token anti-XSRF ya contiene información incrustada que puede identificarla de manera única a un par particular (usuario, aplicación). El parámetro ''Salt'' está destinado a distinguir para qué acción está destinado un token anti-XSRF en particular. No está destinado a ser secreto. Siéntete libre de compartirlo con el mundo. Ojalá hubiéramos elegido un nombre diferente para él, ya que el término sal es engañoso. Piensa en ello más como datos complementarios. :)

Ya utilizamos una sal criptográfica adecuada debajo de las cubiertas. Para obtener más información, consulte mi respuesta en el momento de la carga del valor de ValidateAntiForgeryToken Salt .

tl; dr: No te molestes con la propiedad de sal. Estamos considerando quitarlo de una versión futura de todos modos.


General: su sal debe ser un valor aleatorio, seguro y único superior a 128 bits (por ejemplo, / dev / urandom). Esto se debe almacenar en texto sin formato en una tabla separada para que se pueda usar al verificar un hash. No debe ser visible para el cliente.

La idea general es que hash junto la contraseña y el salt de los usuarios, y almacenas este valor. Por ejemplo:

SHA512(password || salt)

donde password es la password del usuario, salt es el valor único generado aleatoriamente y || Es concatenación.

Luego, cuando el usuario vuelve, repite el proceso con la contraseña suministrada y la compara con el hash almacenado para verificar la identidad del usuario. Si realiza una búsqueda rápida en Google, encontrará más información sobre las sales y su finalidad.

Edición: Esto es incorrecto con respecto al token anti-falsificación de MVC (consulte la respuesta de levi), y lea este blog . Pretender sal es un nombre de formulario único o un ID de formulario (y para empezar no está etiquetado ni se denomina sal)