¿Es una buena práctica? Depende. Estoy de acuerdo en que probablemente no desee enviar la página predeterminada al usuario. Eso arruina la facilidad de uso y puede proporcionar demasiada información para un atacante si hay detalles técnicos.
Sin embargo, ¿qué hay de enviar 403 errores de manera más general? Aquí estoy menos convencido de que es una mala idea en general, y la pregunta más grande es ¿qué ocurre o por qué ocurre el error 403?
Si veo un error 403 con una página de error predeterminada, o particularmente cuando ni siquiera estoy conectado, este grita "administrador incompetente" y, por lo tanto, podría invitar a un ataque no tanto a través de lo que revela sobre su sitio como lo que revela sobre tus administradores.
Pero supongamos que estoy conectado. He sido autenticado. ¿Hay alguna razón cuando intento acceder a un recurso para el que no estoy autorizado a ver que debería devolver algo más que un mensaje de error 403 Acceso denegado? Devolver el código de error permite que esto se maneje programáticamente en el lado del cliente, lo que es una consideración importante con cosas como los servicios web.
Obviamente, esto nunca debería suceder cuando intentas hacer algo expuesto en la interfaz de usuario. Pero como una capa adicional de defensa y oportunidad para el manejo de errores, no veo nada malo en devolver el código de error en este caso, porque puede haber causas (de nuevo, los servicios web vienen a la mente) donde pasar el código de error es El mejor camino a seguir.
Así que con esto en mente, veo algunas cosas que deben considerarse sin prejuicios:
¿Qué información se filtra que puede ayudar a un atacante? ¿Qué información se debe proporcionar con el mensaje de error?
En general, con LedgerSMB registramos extensivamente, pero cualquier cosa que tenga acceso denegado es un mensaje muy corto en el lado del cliente. Esto permite que el administrador vea lo que está pasando pero no el usuario.
¿Qué necesita saber el cliente de manera mínima para manejar el error?
En general, IMO, solo se denegó el acceso a pesar de haber iniciado sesión. El 403 puede ser útil aquí, pero no desea enviar mucho más que esto.
¿Qué otras preocupaciones tienes?
Muchas cosas dependen del modelo de amenaza. El modelo de amenaza de una aplicación web orientada al cliente es muy diferente de una aplicación web de línea de negocios, y estos son diferentes de un servicio web de suscripción. Debe saber qué está protegiendo y de qué se trata antes de continuar.