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 '])).' "';