Estoy intentando codificar la identificación cifrada en la URL. De esta manera: http://www.calemadr.com/Membership/Welcome/9xCnCLIwzxzBuPEjqJFxC6XJdAZqQsIDqNrRUJoW6229IIeeL4eXl5n1cnYapg+NEncriptación de una identificación en una URL en ASP.NET MVC
Sin embargo, tampoco no codifica correctamente y consigo una barra '/' en el cifrado o recibo y el error de IIS: El módulo de filtrado de solicitudes está configurado para rechazar una solicitud que contenga una secuencia de escape doble
He intentado diferentes codificaciones, cada falla:
- HttpUtility.HtmlEncode
- HttpUtility.UrlEncode
- HttpUtility.UrlPathEncode
- HttpUtility.UrlEncodeUnicode
actualización
El problema era que cuando encriptaba un Guid y lo convertía en una cadena base64, contenía caracteres de URL inseguros. Por supuesto, cuando intenté navegar a una url que contenía caracteres inseguros, IIS (7.5/windows 7) explotaría. Url La codificación de la cadena cifrada en base64 generaría un error en IIS (El módulo de filtrado de solicitudes está configurado para denegar una solicitud que contiene una secuencia de escape doble.). No estoy seguro de cómo detecta cadenas de doble codificación, pero lo hizo.
Después de probar los métodos anteriores para codificar la cadena encriptada base64. Decidí eliminar la codificación base64. Sin embargo, esto deja el texto encriptado como un byte []. Intenté UrlEncoding the byte [], es una de las sobrecargas que cuelga del método httpUtility.Encode. Nuevamente, mientras estaba codificado en la URL, a IIS no le gustó y le mostró una "página no encontrada" .
Después de cavar en la red me encontré con una clase HexEncoding/Decoding. La aplicación de la codificación hexadecimal a los bytes cifrados hizo el truco. La salida es url segura. Por otro lado, no he tenido ningún problema con la decodificación y el descifrado de las cadenas hexagonales.
Su actualización es mucho mejor que la respuesta. Y si desea que las URL codificadas en Base64 sean seguras, lea esto: http://stackoverflow.com/a/10858198/237858 – kape123