Manejo de excepciones en aplicaciones de múltiples niveles

0

El manejo de errores y excepciones en las aplicaciones web puede presentar problemas de seguridad, a menudo en forma de denegación de servicio (es decir, cuando un servicio falla debido a un mal manejo de errores) y divulgación de información (es decir, cuando una excepción contiene detalles confidenciales sobre el El sistema se propaga al usuario / atacante).

Para combatir esto, el sistema debe fallar con gracia, revelar pequeños detalles sobre la falla y recuperarse tanto como sea posible. Cuando se trata de excepciones, los lenguajes administrados tienen mecanismos simples y bien entendidos para el manejo de excepciones. Sin embargo, a lo largo de mi investigación no he podido encontrar consejos sobre cómo construir un mecanismo adecuado de manejo de excepciones en las aplicaciones web modernas que incluyan varias capas de lógica entre la base de datos y las aplicaciones cliente.

Por ejemplo, Spring Framework tiene el controlador (que proporciona las API y las solicitudes HTTP), el servicio (que contiene la mayoría de la lógica empresarial) y los repositorios (que manejan la comunicación entre la aplicación y la base de datos). Además, el servicio puede interactuar con componentes y módulos de utilidad que ofrecen varias funcionalidades (es decir, acceso a archivos, cálculo de algoritmos). El siguiente diagrama de flujo de datos ilustra esta arquitectura.

Alexaminarelorigendelasexcepciones,podemosverqueelmotordecálculo,elrepositorioylautilidaddeaccesoaarchivospueden(potencialmente)revelaralgunosdetallessobreelsistema,encasodequeseproduzcaunaexcepciónalinteractuarconlosdiferentesalmacenesdedatos(esdecir,información).sobrelabasededatosSQL,elesquemadelabasedeconocimientos,etc.).

Laspreguntasentoncesseconviertenen:¿dóndedeberíanlosdesarrolladoresmanejarestasexcepcionesyreducirelriesgotantodeladivulgacióndeinformacióncomodeladenegacióndeservicio?

Unenfoquequemepareceadecuadoesmanejarlasexcepcionesamedidaquesurjanyenvolverlasenexcepcionesespecíficasdelaaplicación.Laspartesdelaaplicaciónquetienenflujosdedatosquecruzanunlímitedeconfianza(porejemplo,alsistemadearchivos,Internet)debenlimpiartodaslasexcepcionesalincluirlasenexcepcionespersonalizadas"más amigables" (creadas por los desarrolladores) para evitar cualquier riesgo. la divulgación de información se está propagando aún más, así como para localizar cualquier falla del componente. Los componentes internos deben saber cómo manejar las excepciones de aplicación de manera más adecuada.

El principal inconveniente de este enfoque es que el mecanismo de manejo de excepciones es más complejo, ya que requiere la introducción de excepciones específicas de la aplicación para cada categoría de excepciones nativas (y aplicables).

¿Este enfoque tiene otras ventajas y desventajas, y existe un diseño alternativo que maneje mejor el equilibrio entre la seguridad y la carga de trabajo?

    
pregunta Nikola Luburić 29.11.2018 - 19:48
fuente

1 respuesta

0

Usted menciona

  

¿dónde deberían los desarrolladores manejar estas excepciones y reducir el riesgo tanto de la divulgación de información como de la denegación de servicio?

Las excepciones de sus servicios o programas deben ser manejadas por el propio programa / servicio como regla general. Si el servicio no maneja las excepciones generadas, entonces eso podría ser un problema de seguridad dependiendo de la falla.

El enfoque correcto será verificar el uso correcto de la API, por ejemplo, si su servicio utiliza la función HTTPPost que puede aumentar ConnectionError o BadURI, es responsabilidad del programa manejarla adecuadamente para evitar rutas desconocidas en la ejecución de la misma. .

Le doy una buena práctica para el software que se ejecuta en backends como ejemplo, normalmente el servicio tiene un método que maneja la solicitud HTTP, SMTP o lo que sea, y este método siempre está en un bloque try y captura todas las excepciones. Una vez que tenga esto en su lugar, puede comenzar a profundizar en su código y hacer un bloque de excepciones más específico y verificar que su sistema sea estable, espero que esto le ayude un poco.

    
respondido por el camp0 29.11.2018 - 20:58
fuente

Lea otras preguntas en las etiquetas