Después de mi previous question en cuanto a si la aplicación por defecto Page.IsPostBack de ASP.net es seguro (que no es, sino que puede ser falsificada ... el verbo HTTP ni siquiera tiene que ser post!), Estaba pensando; seguramente debe haber una mejor manera de implementarlo? ¿Podemos pensar en una implementación de Page.IsPostBack que, cuando es cierta, casi garantice que la página es una devolución de datos real de ASP.net? Esto es importante si uno quiere hacer una comprobación de seguridad solo una vez (como si algún contenido va a aparecer, según las funciones del usuario), y quiere hacerlo solo si NO estamos tratando con una devolución de datos de ASP.net .¿Una implementación segura de Page.IsPostBack?
Mi primer pensamiento en cuanto a cómo hacer esto están para implementar el código de verificación en una propiedad, por lo que puede escribir algo como esto dentro de Page_Load
:
if (!_isPostBack)
{
// Do security check
if (userIsNotAuthorized)
{
btnViewReports.Visible = false;
btnEditDetails.Visible = false;
// etc.
}
}
¿Hay una manera de poner en práctica de forma segura _isPostBack
? Tal vez almacenar algo en el ViewState que sería difícil o imposible de improvisar para falsificar una devolución de datos? ¿Una cadena aleatoria?
¿Está preguntando sobre "casi garantizado" en un contexto de seguridad? Eso no tiene sentido. Es seguro o no lo es. "Casi" es lo mismo que no seguro – jalf
Bueno, me refiero a "casi garantizado" en el contexto de que el cifrado RSA es "casi seguro"; teóricamente puede ser forzado por fuerza bruta o puedes 'sacar suerte' y adivinar la clave de alguien, pero es increíblemente poco probable o difícil. – Jez
No hay forma de que pueda confiar en cualquier cosa proveniente de un cliente. Simplemente reelabore su lógica, tiene el objeto Session. –