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