Protejarea site-ului de atacuri sau un pic despre script-ul cross-site (xss)

Rețele de programare PHP sau sugestii practice de programare → Protejarea site-ului de atacuri sau puțin despre scriptingul cross-site (XSS)

XSS - scripting cross site (Sross Site Scrting) - tipul de vulnerabilitate sat, folosit pentru atac hacker.







Specificitatea unor astfel de atacuri este că băieții răi folosesc un site vulnerabil ca mijloc de a ataca clientul. XSS-atacul este de obicei realizat prin construirea unui URL special. pe care atacatorul le prezintă victimei sau inserarea în formele de simboluri html speciale.

Acum, XSS reprezintă aproximativ 15% din toate vulnerabilitățile detectate de site-uri.

Dacă scripturile nu protejează, hackerii vor putea să facă multe. De exemplu, eliminați sau înlocuiți fișierele de pe serverul dvs., urcați în baza de date și modificați datele, obțineți parole de utilizator sau utilizați site-ul pentru a trimite spam. Și mult mai mult.

Nu există 100% protecție, dar voi oferi câteva recomandări practice.

Protecția împotriva substituției adreselor URL (metoda _GET $)

Tot ceea ce primește scriptul în șirul de adresă URL trebuie verificat pentru valabilitate.

Mai întâi, trebuie să configurați .htaccess - să activați verificarea caracterelor valide din șirul url. Dacă site-ul dvs. procesează complet un script (index.php), atunci puteți face acest lucru:







RewriteRule ^ ([A - z0 - 9 / _ -] *) $ index. php [L. QSA]

În acest caz, sunt permise numai caractere latine în URL, caracterul "/" ca separator de directoare, liniuța de jos și liniuțele. Toate celelalte adrese URL vor provoca o eroare și scriptul va fi anulat.

Dacă șirul de adrese URL presupune parametrii de trecere (care arată mai puțin frumos și vizual), atunci trebuie să-l adăugați la expresia regulată. și (fără a uita să scape de aceste personaje).

Acum, hai să avem grijă de fișierul index.php în sine, care la început primește șirul de adrese URL.

$ auri = explode ("/". strtolower ($ _SERVER ['REQUEST_URI'])));

După eliminarea primelor două elemente care conțineau protocolul și domeniul, primul element al matricei conține acum numele primului director.

$ anavi = array ("news". "contacte");

Acum este ușor să verificați valabilitatea catalogului:

$ dir = array_shift ($ auri);

dacă (! $ dir) echo "Sunteți pe pagina principală a site-ului";

elseif (in_array ($ dir. $ anavi)) echo "Sunteți în secțiunea $ dir";

altceva echo "Nu avem o astfel de pagină";

Mai mult, dacă se stabilește nivelul următor al directorului, verificăm corectitudinea acestuia. Totul depinde de structura legăturilor pe care intenționați să le faceți pe site-ul dvs.

Dacă un număr trebuie transmis mai departe, atunci verificăm că acesta este un număr întreg pozitiv.

$ item = array_shift ($ auri);

dacă (! $ item) echo "Aceasta este o listă de știri / imagini";

altfel ($ item (int) $ item> 0) echo "Aceasta este știrea / imaginea nr.". (int) $ item;

altceva echo "Nu avem o astfel de pagină";

Protecție împotriva substituției în forme și cereri către baza de date

Să încercăm să scriem o clasă simplă care să curețe valorile primite de la utilizator.

funcția de dezinfectare ($ val)





Trimiteți-le prietenilor: