come bypassare "header" in php

2

Durante la lettura di un articolo incontro una cosa interessante di cui non ero a conoscenza:

if(!isset($_SESSION['usr_id']) || !isset($_SESSION['usr_name']))
{
    header('Location: index.php');
}

...Which is all well and good if the client respects the Location header. The crawler apparently doesn't, because it doesn't really have to. The bad thing is that any crawler, bot, or browser that can ignore headers could bypass all security on their site.

Credo che sia vero, ma mi stavo chiedendo come posso replicare i risultati. In sostanza, come posso verificare che il browser, il crawler o qualcos'altro stiano ignorando l'intestazione?

Non sono sicuro che questa domanda appartenga qui o allo stackoverflow, ma ritengo che, a causa della natura di questo sito, ci sia una maggiore probabilità che le persone sappiano come ignorarlo.

    
posta Salvador Dali 02.03.2013 - 20:13
fonte

2 risposte

4

Prima di chiarire, la descrizione corretta è che l'intestazione è stata "ignorata" e non "aggirata". Un'intestazione è un pezzo di dati che viene trasmesso come parte di una risposta HTTP, non è di per sé un gateway che controlla l'accesso.

Almeno uno dei commenti sull'articolo rileva che il vero problema qui non è che l'intestazione è stata ignorata, di per sé, ma che l'applicazione non è riuscita a uscire al punto l'autenticazione è stata negata e ha inviato solo l'intestazione. Hanno continuato a compilare e inviare l'intera risposta come se l'utente fosse autenticato correttamente e si fidava che il client reindirizzasse in base all'intestazione senza leggere il contenuto del corpo. Questo non va bene.

Il comportamento corretto sarebbe stato quello di inviare solo l'intestazione (e il corrispondente codice di risposta HTTP) in modo che anche se un client ha scelto di ignorarlo, non ricevere contenuti privilegiati con la risposta.

Una volta che i dati vanno al di fuori del tuo firewall, non sono più tuoi, quindi non invii i dati che non vorresti che qualcuno avesse finché non avessi verificato chi erano.

    
risposta data 02.03.2013 - 20:35
fonte
1

Puoi testarlo con l'estensione cURL in PHP o in modo più efficace usare il software che esegue la scansione del tuo script e vedere quale azione hai ottenuto.

link

Inoltre, puoi verificarlo con lo strumento di valutazione del server web: link

    
risposta data 02.03.2013 - 20:34
fonte

Leggi altre domande sui tag