Manejo de la seguridad, los errores, las advertencias y los registros

Esta sección incluye los siguientes temas:

Seguridad

Una fuente de datos puede operar en uno de los siguientes dos modos de acceso:

  • En el modo de acceso restringido, que es el predeterminado, una fuente de datos entrega solo aquellas solicitudes que se originan en el mismo dominio en el que se encuentra la fuente de datos. El modo restringido evita los ataques de falsificación de solicitudes entre sitios (XSRF) y, por lo tanto, es más seguro que el modo de acceso sin restricciones. Debido a que la biblioteca de fuentes de datos proporciona una interfaz solo para mostrar datos y no para cambiar el estado o los datos del lado del servidor, solo son posibles ataques XSRF que intentan robar datos. Para que tu fuente de datos esté protegida contra intentos de robo de datos, se debe usar el modo restringido junto con la autenticación basada en cookies. La forma en que autenticas a los usuarios depende de tu entorno y de la implementación.

  • En el modo de acceso sin restricciones, una fuente de datos entrega todas las solicitudes sin importar su origen. Una fuente de datos que se ejecuta en modo sin restricciones puede protegerse con una autenticación basada en cookies, pero ten en cuenta que la fuente de datos será vulnerable a ataques XSRF. Usa el modo sin restricciones si las visualizaciones en páginas web fuera del dominio de la fuente de datos necesitan acceder a la fuente de datos o si los datos están en el dominio público y, por lo tanto, no necesitan protección.

Una solicitud de visualización puede especificar un formato de respuesta JSON, CSV o HTML. El formato de respuesta determina el formato en el que una fuente de datos devuelve una tabla de datos. Debido a que los formatos CSV y HTML no son vulnerables a los ataques XSRF, se puede acceder a ellos desde otros dominios, incluso en modo restringido.

Para especificar el modo no restringido, anula isRestrictedAccessMode() de la siguiente manera:

  @Override
  protected boolean isRestrictedAccessMode() {
    return false;
  }

Para simplificar, todos los ejemplos proporcionados con la biblioteca se ejecutan en modo de acceso ilimitado.

Errores y advertencias

Cuando no es posible o deseable mostrar una tabla de datos válida, , la biblioteca arroja una DataSourceException. por ejemplo, si no se puede autenticar al usuario. La biblioteca arroja estas excepciones cuando los errores impiden que se cree una tabla de datos. Es posible que quieras generar excepciones en situaciones únicas de tu fuente de datos. Si es así, crea tus propios tipos de excepción de error mediante la herencia de la clase DataSourceException. También puedes arrojar la clase DataSourceException directamente.

La clase DataSourceException se encuentra en el paquete base y toma los siguientes parámetros:

  • ReasonType 
    Este parámetro es obligatorio. Los tipos de motivos disponibles se definen en la enumeración ReasonType. Si ninguno de los tipos de motivos disponibles es adecuado, puedes usar Other o Internal.
     
  • MessageToUser 
    Este parámetro define el texto del mensaje de error. En la mayoría de los casos, se muestra al usuario como información sobre la herramienta, por lo que es importante no incluir información técnica o confidencial.

Puedes usar el conjunto de funciones auxiliares en datasource.DataSourceHelper para controlar los errores. En este caso, llama a dos funciones con el mismo nombre de setErrorServletResponse para tomar un DataSourceException y configurar un error en la respuesta del servlet de datos. Una de estas funciones toma una solicitud de fuente de datos, la otra toma un HttpServlet request y se usa en casos en los que no se puede crear un DataSourceRequest. Se proporciona una implementación de ejemplo en Cómo definir capacidades y el flujo de eventos.

Si no es posible mostrar una tabla de datos, la biblioteca mostrará un error. Si es posible mostrar una tabla de datos, pero hay un problema para informar, la biblioteca muestra una advertencia junto con la tabla de datos. Por ejemplo, la biblioteca crea una advertencia en las siguientes situaciones:

  • si una visualización de consulta proporciona un LIMIT que da como resultado datos truncados.
  • si una visualización de consulta solicita un patrón de formato no válido en una cláusula FORMAT.

Para agregar tu propia advertencia, crea una instancia de base.Warning y agrégala a tu tabla de datos con el método addWarning().

Registro

La biblioteca usa los registros de Yakarta Commons. El registro de Yakarta Commons se puede usar con los sistemas de registro más comunes que ya tengas implementados. Tal vez tengas que escribir un adaptador si tu sistema de registro no es estándar. Para obtener más información, consulta la página principal del registro de dominios comunes de Yakarta.

Cuando se arroja una excepción, la información se envía al registro. La forma en que accedes al registro depende del sistema de registro que uses.