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)