Codici di stato HTTP - considerazioni sulla sicurezza [duplicato]

0

Sto progettando un framework di autorizzazione e ora sto pensando ai codici di errore che dovrei restituire quando qualcuno sta tentando di accedere a una risorsa e lui non ha le autorizzazioni necessarie. Questi sono i miei pensieri finora:

  1. caso: l'utente non è autenticato, è visto come "anonimo" - > Qui penso che 401 sarebbe il codice di stato giusto, quindi l'utente ha l'opportunità di autenticarsi.

  2. caso L'utente è già autenticato. Vorrei tornare 404 NON TROVATO. RFC2616 afferma che se non vogliamo rivelare esattamente perché la richiesta è stata rifiutata, 404 è un buon modo per andare.

Sto anche pensando di aggiungere un altro caso per l'utente: ADMIN. Se ADMIN non è autorizzato, dovrebbe ricevere risposte personalizzate, in modo che sappia esattamente qual è il problema. Cosa ne pensi di questo? Ha senso? Come potrebbe qualcuno sfruttarlo?

Pensi che sia meglio usare 404 per tutto o distinguere tra 403 e 404 e perché?

C'è qualche buona letteratura su questo argomento? (Ho già cercato e trovato nulla di conclusivo)

    
posta user3464679 15.04.2014 - 13:52
fonte

1 risposta

1

Penso che RFC 2616 sia abbastanza chiaro:

10.4.4 403 Forbidden

The server understood the request, but is refusing to fulfill it.
Authorization will not help and the request SHOULD NOT be repeated.
If the request method was not HEAD and the server wishes to make
public why the request has not been fulfilled, it SHOULD describe the reason for the refusal in the entity. If the server does not wish to make this information available to the client, the status code 404
(Not Found) can be used instead.

Quindi spetta a te se desideri aggiungere ulteriori informazioni (il "motivo del rifiuto") se la richiesta è stata fatta da un amministratore.

Ma in realtà, il tuo amministratore non è autorizzato a visualizzare la risorsa richiesta? Penso che sia il caso, e se ho ragione, la risposta dovrebbe essere sicuramente 401 Unauthorized .

Da 10.4.2. 401 non autorizzato :

[...] If request already included Authorization credentials, then the 401
response indicates that authorization has been refused for those
credentials. [...]

    
risposta data 15.04.2014 - 14:01
fonte

Leggi altre domande sui tag