Un errore 500 indica che il server ha avuto un errore interno. Normalmente significa una delle due possibilità:
- o un componente è inattivo - ok, l'errore scomparirà non appena si riaccende
- o una condizione eccezionale non viene elaborata correttamente dall'applicazione
L'occorrenza di un errore 500 dovrebbe sempre essere seguita da un'azione: se un componente era inattivo, deve essere riparato o riavviato e se una condizione eccezionale non è stata filtrata, l'applicazione ha bisogno di una correzione.
Si verifica un problema con le applicazioni che non elaborano condizioni eccezionali e sono scarsamente supervisionate e mantenute. Se un utente malintenzionato vede un errore 500 che si verifica in modo coerente in determinate richieste, è un'indicazione che l'applicazione non può elaborarlo e non ha elaborato la condizione di errore. Forse una leggera variazione potrebbe far accadere cose brutte ...
Ma la semplice sostituzione del codice 500 con dire un 400 non è una vera soluzione: nasconde solo il vero problema. Se stavo facendo un test di penetrazione black box (senza accesso al codice), semplicemente non fare affidamento sul valore del codice di errore e provare tutti i punti deboli noti, quindi nascondere un 500 interno con un 400 non proteggere l'applicazione. E credo davvero che gli hacker seri penseranno lo stesso ...
In un mondo professionale, i 500 errori dovrebbero essere analizzati, e quando causati da una condizione eccezionale non elaborata, un ticket dovrebbe essere compilato per il team di sviluppo. Per un'applicazione interna, un errore 500 dovrebbe significare (esplicitamente o implicitamente) questo è un errore imprevisto, contatta il supporto