¿Debo exponer el código de estado HTTP 500 en una aplicación REST?

2

En mi aplicación Spring MVC 3, estoy siguiendo los patrones REST y mucha lógica se basa en los códigos de estado HTTP. Por ejemplo, 500 define un error de servidor. Pero OWASP modsecurity dice que no debe exponer este código de estado.

No entiendo por qué un código de estado 500 sería malo? Veo incluso Google muestra 500 correctamente .

    
pregunta Novice User 04.10.2016 - 07:07
fuente

2 respuestas

2

Un error 500 indica que el servidor tuvo un error interno. Normalmente significa una de dos posibilidades:

  • o bien un componente está inactivo: está bien, el error desaparecerá tan pronto como vuelva a estar activo
  • o la aplicación no procesa correctamente una condición excepcional

La aparición de un error 500 siempre debe ir seguida de una acción: si un componente estaba inactivo, debe repararse o reiniciarse, y si no se filtra una condición excepcional, la aplicación necesita una solución.

Se produce un problema con las aplicaciones que no procesan condiciones excepcionales y que están mal supervisadas y mantenidas. Si un atacante ve un error 500 que ocurre constantemente en ciertas solicitudes, es una indicación de que la aplicación no pudo procesarlo y tampoco procesó la condición de error. Tal vez una ligera variación podría hacer que sucedan cosas malas ...

Pero simplemente reemplazar el código 500 con, digamos, 400 no es una solución verdadera: solo oculta el problema real. Si estuviera haciendo una prueba de penetración de caja negra (sin acceso al código), simplemente no me basaría en el valor del código de error y probaré todas las debilidades conocidas, por lo que ocultaría un 500 interno con un 400 No protegería la aplicación. Y realmente creo que los hackers serios pensarán lo mismo ...

En un mundo profesional, los 500 errores deben analizarse y, si se producen debido a una condición excepcional no procesada, se debe llenar un ticket para el equipo de desarrolladores. Para una aplicación interna, un error 500 debería significar (explícita o implícitamente) este es un error inesperado, póngase en contacto con el servicio de asistencia

    
respondido por el Serge Ballesta 04.10.2016 - 10:58
fuente
1

los errores de los servidores generalmente ofrecen una visión general de hasta qué punto el ataque fue exitoso en el servidor. como si su 403, muestra que la autenticación específica fue bloqueada exitosamente por el servidor (significa que el servidor manejó cierta actividad ilegal bastante bien), pero cuando el servidor lanza 500, significa que no pudo manejar cierto error, por lo que se confundió, como El resultado es que el pirata informático tiene la posibilidad de poner más esfuerzo en explotar 500 errores relacionados, donde puede profundizar más para penetrar en el servidor.

En resumen, 500 errores pueden ser peligrosos, ya que solo se lanzan cuando ocurre algo no manejado, y los usuarios no deben ver el resultado o la salida que genera (ese estado o resultado puede ser efectivo para penetrar más profundamente en el servidor)

    
respondido por el Hamza Islam 04.10.2016 - 07:34
fuente

Lea otras preguntas en las etiquetas