Turvaline PHP kood

  • Oluline on tagada kasutajatelt (vormid ja URL-id jne) turvalised andmed, välja arvatud OS-i server ja http-server, peamiselt veebirünnaku tõttu.
  • Teie php-koodi kaitsmiseks on kolm kategooriat:

Andmete kasutajate valideerimine

Kui sait pakub vorme, mis võimaldavad kasutajatel sisu salvestada ja saata, ei ole see piisav sissekannete vormi näitamiseks (e-posti aadress, telefoninumber, toodete hulk). Serverit tuleks samuti jälgida (nt PHP), kui andmed on tavapärased meie ootustele. Arvestades terveid numbreid, teisendage kõik kasutaja saadetud andmed:

Kinnitage URL-i või vormide andmed

Peaaegu kõik saadud andmed pärinevad veebimeistrilt loodud URL-idest või vormidest. Peaaegu kõik URL-i kuvamise parameetrid, mis täpsustavad alltoodut

/index.php?rub=25

Seda parameetrit ei tohiks siiski muuta. Kuid see on võimalik järgmiselt:

 /index.php?rub=0 /index.php?rub= /index.php?rub=aaaaAAAAAaaaa /index.php?rub=1+or+1 
  • Oluline on kontrollida, kas URL-i või vormi kaudu saadud vormingut oodatakse olenemata andmete tüübist.
  • Sama kontrollimiseks saate kasutada funktsiooni filter_input ().
  • Näiteks, kui olete saanud e-posti teel e-kirja e-posti vormingus postituselt kasutajalt. Sama saate taastada järgmiselt:

 $ email = filter_input (INPUT_POST, e-post, FILTER_VALIDATE_EMAIL); kui ($ email) {// E-posti aadressi kirje on tõepoolest meiliaadressi formaat} 

See funktsioon võib filtreerida palju asju: IP-aadressi, URL-i jne. Enne URL-i edastamist protsessina võib htmlentities () abil muuta näiteks IP-aadressi, URL-i jne.

  • Mitmeid filtreid saab kombineerida, kasutades "|" .
  • IP-aadressi valideerimine ainult IPv4-vormingus:

$ ip = filter_input (INPUT_GET, 'ip', FILTER_VALIDATE_IP | FILTER_FLAG_IPV4);

Klõpsake filtritel järgmist linki:

//www.php.net/filter

Jäta URL-i kuvatud sisu vahele

Kui kasutaja sisestatud sisu kuvatakse ekraanil, sisaldab see HTML- või JavaScript-koodi, mis aga muudab kaitsmise kohustuslikuks.

Kui sisu kuvatakse HTML-is: peate seadistama HTML-koodi, et teisendada kõik tähemärgid samaväärsetes HTML-üksustes. Allpool on php funktsioon selle protsessi automatiseerimiseks:

echo htmlentities ($ _ REQUEST ['content']);

Kui sisu peaks olema URL-is kuvatud, peate sisu sisu üle vaatama.

PHP-l on kodeerimiseks kaks funktsiooni: urlencode () ja rawurlencode (). Nende kahe funktsiooni vahe on ala, mis esimeses funktsioonis annab ja annab teisele funktsioonile% 20 ja "+", kodeeringu.

 echo '//www.website?valeur='.urlencode($_REQUEST [' väärtus ']); 

Kui sisu tuleks salvestada andmebaasi, siis on vajalik põgeneda kõigist tähemärkidest, millel on kasutatud andmebaasiserveris konkreetne roll. PHP ja MySQL puhul muudab funktsioon mysql_escape_string () kõik potentsiaalselt kahjulikud tähemärgid parameetrina.

 $ query = 'SELECT id FROM matable WHERE user = "'. mysql_escape_string ($ _ REQUEST ['user']). '"'; 

Pange tähele, et server on konfigureeritud PHP valikuga magic_quotes, kasutajate edastatud andmed on automaatselt kaitstud tagaküljega (backslash). Seega peate enne mysql_escape_string kaitsmist selle põhikaitse tühistama :

 $ query = 'SELECT id FROM mytable WHERE user =' 'stripslashes (mysql_escape_string ($ _ REQUEST [' user '])).' "'; 
Eelmine Artikkel Järgmine Artikkel

Top Näpunäited