Cada vez que hacemos un informe web la consulta ajas nos lleva a la ejecución de manejadores: WebResource.axd y FastReport.Export.axd. Archivos con la extensión .axd se utilizan en las aplicaciones ASP.Net para recibir recursos de las bibliotecas dll: imágenes, javascripts y estilos.
Como resultado, obtenemos el archivo HTML de un informe. Pero, como el informe se ha generado y está en el caché IIS, conociendo el ID del informe generado (que se genera con la consulta), a un malhechor no le da difícil obtenerlo. Y es un problema posible de seguridad si el informe contiene datos confidenciales. Una posible salida de esta situación es la autentificación del usuario. Es decir, si la invocación del informe se realiza por un usuario concreto, su ejemplar puede obtener solo el mismo usuario.
Podríamos comprobar la consulta http para la autentificación del usuario, pero no es una salida. El malechor siempre puede cambiar la consulta. La mejor solución será la autentificación del usuario se gún sesión. Hasta hace poco tiempo FastReport.Net no ha tenido estas funcionalidades. Pero en la versión 2019.3.13 aoarece el evento para la autentificación de los recursos del informe ajax cargados a través de un manejador ASP en WebReport.
El evento WebReport.CustomAuth se realiza antes de mostrar informe. En este momento puede comprobar al usuario en la sesión. Aquí tiene un ejemplo de utilizar un nuevo evento:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public ActionResult Index() { Session["User"] = "Father Brown"; ... webReport.CustomAuth += WebReport_CustomAuth; ... } ... private void WebReport_CustomAuth(object sender, CustomAuthEventArgs e) { e.AuthPassed = (e.Context.Session["User"] as string) == "Father Brown"; } ... |
Como ve, primero, antes de crear informe, establecemos el nombre del usuario en la sesión http, nos suscribimos con el evento. En el manejador del evento hacemos la comprobación del usuario. Si el informe se solicita por otro usuario, su nombre en la sesión será diferente y el informe no aparecerá. En este ejemplo puede ver la autentificación según usuario, pero, claro, hay otras opciones.
De esta manera, integrando la autentificación del informe, podemos elevar la seguridad de datos considerablemente. .