Eventuali vulnerabilità nell'input dell'utente al web server che eseguono Apache e PHP?

0

C'è comprensibilmente molta enfasi sull'igienizzazione dell'input dell'utente trasmesso a PHP su un server web e numerose opinioni su come farlo.

Qualcuno può confermare che non ci sono problemi di sicurezza con il seguente codice PHP che potrebbe compromettere il server attraverso un exploit:

if($_SERVER['QUERY_STRING'] == "kjg68KGH$88@kjhik8768"){
   $_SERVER['QUERY_STRING']=NULL;
   do stuff
} else {
   $_SERVER['QUERY_STRING']=NULL;
   do other stuff
}

o

if($_POST['the-var'] == "kjg68KGH$88@kjhik8768"){
   $_POST=[];
   do stuff
} else {
   $_POST=[];
   do other stuff
}

Se c'è (non vedo come potrebbe esserci), allora perché?

    
posta Jenn 03.02.2016 - 07:41
fonte

3 risposte

0

L'utilizzo del confronto debole in PHP è quasi sempre una cattiva idea in quanto può portare a bug e vulnerabilità. Vedi qui per un esempio interessante .

Nel tuo caso, dovrebbe essere per lo più ok, anche se ci sono alcuni casi d'angolo, ad esempio "0x000000" == "000" , "1e1" == "10" o "0xBEEF" == "48879" .

A parte questo, non c'è modo di compromettere il server con il solo codice.

    
risposta data 03.02.2016 - 20:15
fonte
0

Il codice self non è sicuro, poiché la maggior parte dei server Web è conforme a rfc2616. Rfc2616 è obsoleto da rfc7230. Quindi viene accettata una query con più parametri di query con lo stesso nome. Quale viene presentato al tuo codice? Se tutto, quale scegli, in base a cosa? Rfc7230 afferma che tale richiesta DEVE essere considerata come una richiesta non valida.

    
risposta data 19.08.2016 - 07:36
fonte
0

Esempio con una richiesta get. Supponiamo che tu voglia votare per Clinton link

Ti mando una mail con la richiesta di votare per Clinton con un link link

Un server web non conforme a rfc7230 accetterà questa richiesta. Ma cosa sarà consegnato a php? Il primo voto = levigatrici o l'ultimo o tutti e tre come matrice? Tu voterai per? Molto probabilmente Sanders ....

Ovviamente non lo faresti in un get, ma usi post. Inoltre in un post è possibile aggiungere più parametri con lo stesso nome. Questo server non compatibile con rfc7320 lo accetterà.

    
risposta data 19.08.2016 - 12:49
fonte

Leggi altre domande sui tag