Devo nascondere determinati codici di stato HTTP?

1

Quindi ho diversi senior che assumono posizioni diverse su questo. Alcuni dicono che non nascondono nulla, quei codici ci sono per una ragione. Altri dicono di nascondere la maggior parte dei codici di stato, riducendo il numero a un gruppo molto più piccolo (come solo 400 e 404). Anche RFC 2616 suggerisce che sono consentite alcune sostituzioni (403 viene trattato come un 404 per una risorsa che il server Web non fornirà mai e non spiegherà mai perché).

Non sto parlando della pagina degli errori che l'utente vede. Ovviamente questo dovrebbe apparire piacevole per l'utente e non dovrebbe scaricare una traccia stack, ecc. Sto parlando dello stato http incluso nella risposta. Significa che se provano ad accedere a una risorsa per la quale non sono autorizzati, invece di dare un 401/403, in realtà la risposta è un 404, quindi non c'è modo di sapere che c'era qualcosa per cui non erano autorizzati.

C'è una risposta chiara su quale è la pratica migliore (ti piace come è meglio non ripetere il tuo hashing della password)?

    
posta Lawtonfogle 22.10.2014 - 17:50
fonte

1 risposta

2

No, non esiste un insieme predefinito di codici di stato HTTP "must-have". Tra i 40 codici di stato elencati in RFC 2616 ho messo insieme un elenco di codici che, secondo la mia esperienza , sono quelli che dovresti prendere in considerazione di utilizzare al massimo.

200, 201
302, 304
400, 403, 404
500

8 codici di stato, non così male. A seconda della particolare applicazione, ce ne sono altri che potrebbero essere utili (202, 503, ecc.) Ma la maggior parte dei codici di stato (in particolare nei gruppi 1xx / 4xx / 5xx) sono utili solo in condizioni specifiche o verranno gestiti dall'applicazione server.

In breve, utilizza i codici che corrispondono alla semantica dell'API della tua applicazione.

Per risolvere il tuo esempio specifico di sostituzione di 401/403 con 404, questo è un caso particolare in cui rivelare l'esistenza di una risorsa è di per sé un rischio per la sicurezza. Ci sono poche applicazioni in cui questo comportamento è necessario.

GET /users/admin/edit dovrebbe restituire 403.

GET /docs/top-secret/missile-launch-codes dovrebbe restituire 404.

    
risposta data 27.10.2014 - 14:11
fonte

Leggi altre domande sui tag