Saugokite savo PHP kodą
- Labai svarbu užtikrinti, kad naudotojai (formos ir URL) būtų saugūs, išskyrus OS serverį ir http serverį, daugiausia dėl interneto atakos.
- Yra 3 kategorijos, kad apsaugotumėte php kodą:
Duomenų naudotojų patvirtinimas
Kai svetainėje pateikiamos formos, leidžiančios vartotojams užfiksuoti ir siųsti turinį, to nepakanka norint nurodyti įrašų formatą (el. Pašto adresas, telefono numeris, produktų kiekis). įprastas mūsų lūkesčiams. Atsižvelgdami į visus skaičius, konvertuokite visus naudotojo atsiųstus duomenis:
Patvirtinkite duomenis iš URL arba formų
Beveik visi gauti duomenys yra iš URL ar formų, kurias sukūrė žiniatinklio valdytojas. Beveik visi URL rodymo parametrai, kaip nurodyta toliau:
/index.php?rub=25
Tačiau šis parametras neturėtų būti pakeistas. Tačiau tai įmanoma, kaip nurodyta toliau:
/index.php?rub=0 /index.php?rub= /index.php?rub=aaaaAAAAAaaaa /index.php?rub=1+or+1
- Labai svarbu patikrinti, ar iš URL ar formos gautas formatas yra būtinas, nepriklausomai nuo duomenų tipų.
- Jei norite patikrinti tą patį, galite naudoti funkciją filter_input ().
- Pavyzdžiui, jei gavote el. Laišką iš naudotojo iš formato įrašo su lauko pavadinimu kaip el. Jūs galite susigrąžinti tą:
$ email = filter_input (INPUT_POST, „el. paštas“, FILTER_VALIDATE_EMAIL); jei ($ email) {// El. pašto adreso įrašymas iš tikrųjų yra pašto adreso formatas}
Ši funkcija gali filtruoti daugelį dalykų: IP adresas, URL ir kt. Prieš siunčiant URL kaip procesą, gali būti modifikacijų, pvz., Kodavimo eilutės ().
- Naudojant „|“ galima sujungti kelis filtrus. .
- Jei norite patvirtinti IP adresą tik IP formatu:
$ ip = filter_input (INPUT_GET, 'ip', FILTER_VALIDATE_IP | FILTER_FLAG_IPV4);
Spustelėkite toliau pateiktą filtrų nuorodą:
//www.php.net/filter
Praleiskite rodomą URL turinį
Kai ekrane rodomas vartotojo įvestas turinys, jis turi HTML arba „JavaScript“ kodą, kuris apsaugo nuo privalomos apsaugos.
Jei turinys bus rodomas html: turite HTML koduoti nustatymą, kad konvertuoti visus simbolius lygiaverčiais HTML subjektais. Žemiau yra php funkcija automatizuoti šį procesą:
echo htmlentities ($ _ REQUEST ['content']);
Jei turinys turėtų būti rodomas URL: turėtumėte koduoti turinį.
PHP turi dvi funkcijas: koduoti (urlencode) ir rawurlencode (). Skirtumas tarp šių dviejų funkcijų yra tos srities kodavimas, kuris pirmoje funkcijoje suteikia ir suteikia% 20 ir „+“ antroje.
echo '//www.website?valeur='.urlencode($_REQUEST [' reikšmė ']);
Jei turinys turėtų būti saugomas duomenų bazėje: būtina išeiti iš visų simbolių, turinčių konkretų vaidmenį naudojamame duomenų bazės serveryje. PHP ir MySQL funkcijose mysql_escape_string () visi potencialiai žalingi simboliai eilutėje perduodami kaip parametras.
$ query = 'SELECT id FROM matable WHERE user = "'. mysql_escape_string ($ _ REQUEST ['user']). '"';
Atkreipkite dėmesį, kad serveris yra sukonfigūruotas naudojant PHP parinktį magic_quotes, naudotojų perduodami duomenys automatiškai apsaugomi backslashes (backslash). Taigi, prieš apsaugodami „ mysql_escape_string“, turėtumėte „atšaukti“ šią pagrindinę apsaugą:
$ query = 'SELECT id FROM Mytable WHERE user = ". stripslashes (mysql_escape_string ($ _ REQUEST [' user '])).'" ';