Osvedčené metódy zabezpečenia PHP. Zraniteľnosť a ochrana pred vstrekovaním PHP. Pravidlá bezpečného kódovania PHP Riadenie prístupu k súborom

Po celom svete možno na letiskách nájsť slogan „Bezpečnosť nie je žart“. Rovnaký slogan, ktorý by mal mať každý správca systému nastavený vedľa svojho servera PHP. A každý, kto sa pripája k serveru na internete, musí prijať náležité bezpečnostné opatrenia alebo riskovať stratu dát a dokonca aj peniaze, ak môžu hackeri so škodlivým softvérom spôsobiť zmätok pomocou klávesnice svojho počítača.

Vývojár stránok, ktorý má obavy z bezpečnostných problémov, musí neustále opakovať: „Neverte sieti.“ Ak sa obávate ochrany svojho webu, zopakujte toto príslovie pri vývoji kódu pre budúce stránky na tomto webe. Všetky informácie odoslané na server po sieti (či už ide o adresu URL, údaje z formulára HTML alebo údaje prichádzajúce cez iný sieťový port) by sa mali považovať za potenciálne nebezpečné. V tomto článku bolo navrhnutých niekoľko spôsobov zabezpečenia prichádzajúcich informácií. Tieto metódy nie je potrebné iba aplikovať, ale venovať im istý čas identifikáciu ďalších potenciálnych rizík a nájdenie spôsobov, ako im zabrániť.

Druhé základné pravidlo pre vytvorenie zabezpečeného webu je: „Minimalizujte poškodenie.“ Čo sa stane, ak sa program, ktorý napíšete a ktorý si myslíte, že je celkom spoľahlivý, ukáže ako zraniteľný? Aj napriek tomu, že zostanete úplne v bezpečí, obmedzte škody, ktoré by mohol narušiteľ spôsobiť zneužitím tejto chyby zabezpečenia.

Keď návštevníci prídu na vaše stránky, dúfajú, že stránka obsahuje platné informácie, ktoré nepoškodia ich ani ich počítače, a že informácie, ktoré poskytnú, budú správne spracované. Pre návštevníka vždy existuje určité riziko narušenia bezpečnosti pri interakcii s akoukoľvek stránkou, bez ohľadu na to, či ide o zábavnú stránku, informácie alebo elektronický obchod. Zodpovednosť za ochranu návštevníkov pred týmito rizikami spočíva na návrhárovi webových stránok. To znamená, že ste povinní nielen bezpečne ukladať informácie poskytované návštevníkmi na vašom serveri, ale aj prijímať opatrenia na ochranu informácií poskytovaných počas ich prenosu z počítačov návštevníkov na váš server.

Všetky tieto úvahy by však nemali brániť vašim zámerom, napríklad uviesť online svoje stránky elektronického obchodu.

Možné útoky

Pripojenie servera k internetu je ako otvorenie obchodu na rušnej ulici. Chceli by ste mať veľa návštevníkov, ale bez preventívnych opatrení môžete zistiť, že vašu neopatrnosť nevyužijú bežní návštevníci, ale veľmi nežiaduci hostia.

Spravidla hackermi zavolajte tých, ktorých by bolo správnejšie pomenovať softvérové \u200b\u200bbezpečnostné crackery... V počítačovej komunite sa bezpečnostnými crackermi rozumejú špecialisti, ktorí pomocou šťastnej zhody okolností alebo svojich schopností prekonajú bezpečnosť počítačových systémov a spôsobia škodu. A hackeri sú programátori, ktorí vedia majstrovsky písať programy a sú schopní nielen porozumieť zložitému kódu, ale aj sami napísať efektívny (pre cudzincov často neprístupný) kód v mnohých jazykoch. Titul hacker je pre programátora cťou a zdá sa, že titul softvérový hacker znamená, že vlastník musí neustále dohliadať na hľadané poznámky.

Mnoho nádejných programátorov si neuvedomuje, aké ponižujúce je nazvať softvérovým hackerom, a preto sa uchyľujú k nástrojom a skriptom, ktoré nájdu na webe. Takýmto začínajúcim crackerom sa hovorí script-kiddie alebo v našich kulkhackeroch. Títo ľudia sami často len ťažko chápu, čo robia. Spravidla ide o kategóriu páchateľov, ktorí stoja za primitívnymi útokmi, ako je kompromitácia webových stránok, XSS a SQL injection.

Webové kompromisy a útoky XSS

Prípady kompromisu na webových stránkach, ktoré sú často nepríjemnejšie než skutočne škodlivé, sú pomerne časté, pretože mnoho stránok otvára bezpečnostnému hackerovi príležitosť oznámiť svetu, že dosiahol svoj cieľ. Na kompromitovanie nesprávne navrhnutej webovej stránky niekedy stačí postačovať iba pomocou webového prehliadača. Zvážte napríklad nasledujúci program:

Stránka s jednoduchým formulárom na pridávanie komentárov ". $ riadok [" text "].""; } } ?> Základy PHP

Tento program implementuje systém komentovania vo veľmi primitívnej podobe (ak študujete môj manuál PHP od začiatku, potom ešte nemusí byť oboznámený s operáciami práce s databázami; ak áno, odporúčam vám vrátiť sa k tomuto článku po prečítaní príslušného materiálu na MySQL).

Po prečítaní tohto kódu sa skúsený programátor začne cítiť trochu menej sebavedome (nezabudnite - „Neverte sieti“). Takýto program prijíma údaje formulárov, od ktorých sa očakáva, že budú obsahovať text komentára. Tento text je priradený k premennej $ comment a je uložený v databáze na zobrazenie budúcim návštevníkom. Ak sú zadané údaje také, aké očakávame, potom nebudú žiadne problémy.

Teraz sa na chvíľu vložte do chladiča a predstavte si, čo sa stane, ak vstup obsahuje deskriptory HTML. Tento jednoduchý program mechanicky vloží takéto deskriptory do vykreslenej stránky a táto pokazená stránka sa rozvinie v prehliadačoch iných návštevníkov namiesto obvyklého. Jedným z deskriptorov, ktoré môžu byť obzvlášť nebezpečné z hľadiska ochrany údajov, je deskriptor