Zabezpečte svoj PHP kód
- Je dôležité zabezpečiť bezpečné údaje od používateľov (formuláre a adresy URL) okrem serverov operačného systému a http servera hlavne z dôvodu webového útoku.
- Na zaistenie vášho php kódu existujú 3 kategórie:
Overenie používateľov údajov
Ak stránka ponúka formuláre, ktoré umožňujú používateľom zachytiť a odoslať obsah, nepostačuje na označenie formátu záznamov (e-mailová adresa, telefónne číslo, množstvo produktov). naše očakávania. Berúc do úvahy celé čísla, konvertujte všetky údaje odoslané užívateľom:
Overte údaje z adresy URL alebo formulárov
Takmer všetky prijaté údaje pochádzajú z adresy URL alebo formulárov, ktoré nastavil správca webu. Takmer všetky parametre zobrazenia adresy URL udávajú:
/index.php?rub=25
Tento parameter by sa však nemal upravovať. Toto je však možné nasledovne:
/index.php?rub=0 /index.php?rub= /index.php?rub=aaaaAAAAAaaaa /index.php?rub=1+or+1
- Je dôležité zistiť, či sa formát prijatý prostredníctvom adresy URL alebo formulára očakáva bez ohľadu na typ údajov.
- Na overenie môžete použiť funkciu filter_input ().
- Ak ste napríklad dostali e-mail od používateľa vo formáte príspevku s názvom poľa ako e-mailom. Môžete ho obnoviť nasledovne:
$ email = filter_input (INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); if ($ email) {// Zadanie e-mailovej adresy je skutočne formát poštovej adresy}
Táto funkcia môže filtrovať mnoho vecí: IP adresu, URL atď. Pred odoslaním cez URL ako proces pomocou htmlentities () môžu existovať modifikácie ako kódovací reťazec.
- Niekoľko filtrov možno kombinovať pomocou "|",
- Overenie adresy IP iba vo formáte Ipv4:
$ ip = filter_input (INPUT_GET, 'ip', FILTER_VALIDATE_IP | FILTER_FLAG_IPV4);
Kliknite na nasledujúci odkaz pre filtre:
//www.php.net/filter
Preskočiť zobrazený obsah adresy URL
Keď sa na obrazovke zobrazí obsah zadaný používateľom, obsahuje kód HTML alebo JavaScript, ktorý však vyžaduje ochranu.
Ak sa má obsah zobrazovať v html: musíte HTMLencode nastaviť, aby sa všetky znaky v ekvivalentných HTML entitách konvertovali. Nižšie je funkcia php na automatizáciu tohto procesu:
echo htmlentities ($ _ REQUEST ['content']);
Ak by sa obsah mal zobrazovať v adrese URL: musíte obsah urlen kódovať.
PHP má dve funkcie, ako to urobiť: urlencode () a rawurlencode (). Rozdiel medzi týmito dvoma funkciami je kódovanie oblasti, ktorá v prvej funkcii udáva a poskytuje% 20 a "+" v druhom.
echo '//www.website?valeur='.urlencode($_REQUEST['hodnota']);
Ak by obsah mal byť uložený v databáze: je potrebné uniknúť všetkým použitým znakom v použitom databázovom serveri. Pre PHP a MySQL funkcia mysql_escape_string () robí všetky potenciálne škodlivé znaky v reťazci ako parameter.
$ query = 'SELECT id Z matného WHERE user = "'. mysql_escape_string ($ _ REQUEST ['user']). '"';
Všimnite si, že server je nakonfigurovaný s voľbou PHP magic_quotes, údaje prenášané užívateľmi sú automaticky chránené spätnými lomkami (spätné lomky). Pred ochranou mysql_escape_string by ste teda mali túto základnú ochranu zrušiť :
$ query = 'VYBRAŤ id FROM mytable WHERE user = "'. stripslashes (mysql_escape_string ($ _ REQUEST ['user'])). '"';