A webhely védelme a támadásoktól vagy kicsit a webhelyen keresztüli szkripteléssel kapcsolatban (xss)
PHP programozási receptek vagy gyakorlati programozási tippek → A webhely védelme a támadásoktól, vagy egy kicsit a kereszttelepítési szkriptekről (XSS)
XSS - cross site scripting (Sross Site Scrting) - a sebezhetőség típusa ült, amelyet a hacker támadáshoz használt.
Az ilyen támadások sajátossága, hogy a rossz fiúk kiszolgáltatott helyet használnak az ügyfél támadásának eszközeként. Az XSS-támadást általában egy speciális URL létrehozásával végzik el. amelyet a támadó az áldozatnak mutat be, vagy a speciális html-szimbólumok beillesztésébe.
Most az XSS az összes felfedezett webhely sebezhetőségének mintegy 15% -át teszi ki.
Ha a szkriptek nem védik, a hackerek sok mindent megteszhetnek. Például távolítsa el vagy cserélje le a fájlokat a kiszolgálón, mászjon át az adatbázisba és módosítsa az adatokat, kapjon felhasználói jelszavakat, vagy használja webhelyét spam küldésére. És még sok más.
100% -os védelem nem létezik, de gyakorlati ajánlásokat fogok adni.
URL-helyettesítés elleni védelem ($ _GET módszer)
Mindent, amit a szkript az URL-sorozatban kap, érvényességét ellenőrizni kell.
Először is be kell állítania a .htaccess beállítást - lehetővé kell tennie az érvényes karakterek ellenőrzését az url karakterláncban. Ha a webhely teljesen feldolgozza egy parancsfájlt (index.php), akkor ezt megteheti:
RewriteRule ^ ([A - z0 - 9 / _ -] *) $ index. php [L. QSA]
Ebben az esetben csak latin karakterek engedélyezettek az URL-ben, a "/" karakter a könyvtárszeparátor, az alsó kötőjel és a kötőjel. Minden más URL hibát okoz, és a parancsfájl megszakad.
Ha az URL-karakterlánc olyan átadási paramétereket feltételez (amelyek kevésbé gyönyörűek és vizuálisan nézhetők ki), akkor hozzá kell adnia a rendszeres kifejezéshez. és (ne felejtsük el elkerülni ezeket a karaktereket).
Vigyázzunk magunkra az index.php fájlra, amely az elején megkapja az URL-címet.
$ auri = explode ("/". strtolower ($ _SERVER ['REQUEST_URI'])));
Miután eltávolította az első két elemet, amely tartalmazza a protokollt és a tartományt, a tömb első eleme most tartalmazza az első könyvtár nevét.
$ anavi = array ("news", "pics", "aboutme", "contacts");
Most könnyű ellenőrizni a katalógus érvényességét:
$ dir = array_shift ($ auri);
ha (! $ dir) echo "Ön a főoldalon található";
elseif (in_array ($ dir. $ anavi)) echo "$ dir" rész van;
Másként visszhangzik: "Nincs ilyen oldalunk";
Továbbá, ha meghatározza a könyvtár következő szintjét, ellenőrizzük annak helyességét. Mindez attól függ, hogy milyen linkeket szeretne létrehozni a webhelyén.
Ha egy számot továbbítani akarunk, akkor ellenőrizzük, hogy ez egy pozitív egész szám.
$ item = array_shift ($ auri);
ha (! $ item) echo "Ez a hír / képek listája";
elseif ($ tétel (int) $ item> 0) echo "Ez a hír / kép száma" (int) $ item;
Másként visszhangzik: "Nincs ilyen oldalunk";
A helyettesítéstől való védelem formanyomtatványok és kérések az adatbázisba
Próbáljunk egyszerű osztályt írni, amely megtisztítja a felhasználótól kapott értékeket.
funkció sanitize ($ val)