MySQL a nebezpečné kódy, možnosť zneužitia chýb a pod.
Mám trochu obšírnu otázku. Začínam programovať v PHP a MySQL a som v rozpakoch. Internet je plný viet typu: "Nesprávne naprogramovaný/resp. s chybami/ zdrojový kód môže nabúrať integritu databázy, može byť zneužitý" a pod.
Mám momentálne záujem pustiť sa do jednoduchého shout boxu, taka mini kniha odkazov, ale nechcem použiť žiaden open-source kód s hotovým fórumom, chcem sa do toho pustiť sám. Chcem do databázy vkladať jednotlivé príspevky s rôznymi údajmi cez klasický formulár s PHP mysql query.
Preto moja otázka znie, ako by mohli byť zneužité programátorské chyby/nedostatky, ktoré by som poprípade spravil a aké následky by mohli mať, ako sa im vyvarovat a ako ich riešiť. Mohol by som takýmto spôsobom nechcene poskytnúť prístupové heslá, poprípade poskytnúť prístup k rôznym údajom?
Prosím o zoznam najčastejších chýb takéhoto rázu, poprípade by som bol vďačný aj za linky, len nech sú to stránky v nejakom ľudskom jazyku (SVK, CZ), prosím.
programovat v PHP a MySQL sa učím z knihy "PHP a MySQL" od Larry Ullman-a.
Za každú radu by som bol vďačný.
ICQ# 221-761-301 alebo mejl 2laak@post.sk
Nějaké čtení pro začátek:
http://www.zive.cz/h/Programovani/AR.asp?ARI=119246 &CAI=2038
obrana-proti-sql-injection.php
http://interval.cz/clanky/bezpecnost-predevsim-incl ude-v-php
http://www.root.cz/clanky/php-pro-experty-bezpecnos t
article.php
bezpecnost-weboveho-serveru.php
clanek_217.html
Ta kniha neni spatna pro zacatek, je dobre popsana, pok se take mrkni na www.php.net tam je snad vsechno k nalezeni.
Najčastejšie sú útoky SQL injection a HTML injection (plus JavaScript injection). Základom je neveriť vstupom od používateľa, čiže ošetrovať údaje z GET, POST a COOKIE. Ďalšou častou chybou je includovanie súboru, ktorého meno dostaneš z parametra URL bez akejkoľvek kontroly.
Proti SQL injection vymysleli "úžasnú" ochranu (magic quotes), ktorá ošetrí vstupy od používateľa tak, aby boli bezpečné. Keď vypneš magic quotes, tak si musíš vstupy ošetrovať sám a pri vytváraní dopytov na databázu použiť napr. funkciu mysql_escape_string. Podľa mňa je najlepšie vypnúť magic quotes a pripraviť si hodnoty parametrov do premenných, ktoré sa potom použijú v SQL dopyte, napr. takto:
Vloženiu HTML kódu na stránky zabrániš tak, že použiješ funkciu htmlspecialchars vždy, keď vypisuješ obsah premennej, ktorá sa má zobraziť ako čistý text. Ak pridávaš text ako hodnotu parametra URL, použiješ urlencode. HTML/JavaScript injection si môžeš vyskúšať na živě.sk/cz.
Ďalšími dobrými opatreniami proti útokom je vypnutie globálnych premenných (register globals), zakázanie prechádzania adresármi, nevypisovanie (ale logovanie) chýb a podobne.
Dobrý navod !
Ja myslim ze ten kdo nema osetren sqlinjection utok tak si ho zaslouzi, pokud ma nejaky druhe strany tam v drtive vetsine je nastavena direktiva magickych uvozovek. Take je tento utok tak znamy ze se snim zacatecnik hned setka.
Rekl bych ze bysme se mely bat jinych utoku.
aj ked to nie je pre teba v ludskom jazyku, aj tak sa skus na to pozriet: http://www.securiteam.com/securityreviews/5DP0N1P76 E.html. btw., v buducnosti sa anglictine tak ci tak nevyhnes, pokial chces programovat a citat aktuality zo sveta IT.
este ma napadlo, ze by si si mohol kupit knihu - Hacking bez tajemstvi - webove aplikace(v CZ jazyku). su tam popisane vsetky najcastejsie webove utoky.