È una buona pratica? Dipende. Sono d'accordo sul fatto che probabilmente non vuoi semplicemente inviare la pagina predefinita all'utente. Ciò rovina l'usabilità e può fornire troppe informazioni a un utente malintenzionato se ci sono dettagli tecnici.
Tuttavia, per quanto riguarda l'invio di errori 403 in generale? Qui sono meno convinto che sia una cattiva idea in generale, e la domanda più ampia è cosa sta succedendo o perché si verifica l'errore 403?
Se vedo un errore 403 con una pagina di errore predefinita, o in particolare quando non sono nemmeno loggato, questo urla "amministratore incompetente" e quindi potrebbe sembrare che inviti un attacco non tanto attraverso ciò che rivela sul tuo sito tanto come ciò che rivela sui tuoi amministratori.
Supponiamo però di aver effettuato l'accesso. Sono stato autenticato. C'è qualche ragione quando provo ad accedere a una risorsa che non sono autorizzato a vedere che dovrebbe restituire qualcosa di diverso da un messaggio di errore 403 di accesso negato? Il passaggio del codice di errore consente di gestirlo a livello di codice sul lato client, aspetto importante per cose come i servizi web.
Ora ovviamente questo non dovrebbe mai accadere quando si tenta di fare qualcosa esposto nell'interfaccia utente. Ma come ulteriore livello di difesa e opportunità per la gestione degli errori, non vedo nulla di sbagliato nel restituire il codice di errore in questo caso, perché potrebbero esserci delle cause (di nuovo, i servizi web mi vengono in mente) dove passare il codice di errore è la migliore via da seguire.
Quindi, con questo in mente, vedo alcune cose che devono essere guardate in modo non pregiudizievole:
Quali informazioni sono trapelate che possono aiutare un utente malintenzionato? Quali informazioni dovrebbero essere fornite con il messaggio di errore?
In generale, con LedgerSMB registriamo in modo estensivo, ma qualsiasi cosa negata per accesso è un messaggio molto breve sul lato client. Ciò consente all'amministratore di vedere cosa sta succedendo ma non l'utente.
Che cosa deve minimamente sapere il client per gestire l'errore?
Di solito, IMO, solo quell'accesso è stato negato nonostante l'accesso. Il 403 può essere utile qui, ma non si vuole inviare molto più di questo.
Quali altre preoccupazioni hai?
Molte cose dipendono dal modello di minaccia. Il modello di minaccia di un'applicazione web rivolta al cliente è molto diverso da una linea di app web aziendale e queste sono diverse da un servizio web di sottoscrizione. Devi sapere cosa stai proteggendo e da cosa prima di andare oltre.