Ucinna prevencia pred utokmi v php

Programovacie jazyky, rady, poradňa...
Holubar
Darca
Darca
Používateľov profilový obrázok
Príspevky: 3894
Registrovaný: 24 feb 2005, 21:26
Bydlisko: Senec
Kontaktovať používateľa:

Ucinna prevencia pred utokmi v php

Príspevok od používateľa Holubar »

Zacinam sa trochu zaujimat aj o bezpecnost webovych aplikacii, hlavne mi ide o zabezbecenie systemu autentifikacie pomocou SESSIONS v php. Ake su hlavne bezpecnostne zasady pri takomto sposobe autentifikacie, coho by som sa mal vyvarovat, na co by som nemal pri pisani kodu zabudat? Tiez ma zaujima ucinna ochrana pred utokmi spojenymi s nahodnym zadavanim nicku a hesla - ako efektivne osetrit prihlasovaciu stranku? Budem vdacny za kazdy nazor a dobru radu
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa audiotrack »

najväčším nepriateľom prihlásení cez session je xss. Naštuduj si čo to je, ako funguje a pochopíš aj ako sa brániť. K tej druhej časti: použi timestampy (intervaly medzi dvoma chybne zadanými heslami), captchu prípadne inú formu prihlasovania. Nezabudni ani na logovanie, lebo detekciea útoku je prvým krokom k obrane
Holubar
Darca
Darca
Používateľov profilový obrázok
Príspevky: 3894
Registrovaný: 24 feb 2005, 21:26
Bydlisko: Senec
Kontaktovať používateľa:

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa Holubar »

Mam objednanu tuto knizku, tak snad ma uvedie do problematiky.

No a login - captcha a pod by som sa radsej vyhol, no tiez nechcem, aby mi tam niekto hammeroval login. Ako zrealizovat tie timestampy? Dat ku kazdemu nicku do tabulky v db este cas posledneho pokusu, alebo na to viest zvlast tabulku? A co v tomto pripade myslis pod logovanim? Akym sposobom logovat a co vsetko by malo byt zaznamenavane?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa audiotrack »

spomínanú knihu mám doma, na začiatky je veľmi dobrá. Ale je to viac menej len taký úvod. Stampy by som dal do osobitnej tabuľky, ktorá by zároveň slúžila ako spomínaný log. Pointou je uloženie si neúspešného pokusu o prihlásenie, spolu s ip a časom (+zadaným menom a heslom). Pri ďalšom pokuse sa najprv pozreť do tejto tabuľky, a ak je čas menší ako nejaký vopred stanovený tak nastane chyba a ani sa nebudeme pozerať do tabuľky s užívateľmi. Zároveň pridáš nový záznam, s novým časom (môžeš aktualizovať starý, no potom stratíš spomínané logy). Pomocou toho si hocikedy ľahko z tejto tabuľky vytiahneš všetky chybné prihlásenia z tej-ktorej ip, vidíš rozdiely v časoch a vieš či sa niekto snažil prelomiť heslo alebo to bolo neúspešné priihlásenie vďaka preklepu v mene/hesle. Je to jeden zo spôsobov, môžeš si vymyslieť aj niečo iné, vlastné
eMPiko
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3085
Registrovaný: 11 jan 2007, 16:40

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa eMPiko »

Mohol by som sa opytat, aku literaturu by si teda ohladne bezpecnosti odporucal? Resp. do akej miery povazujes tu Holubarovu knizku za nedostatocnu?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa audiotrack »

keď sa začneš bezpečnosťou zaoberať vážnejšie, pochopíš že je veľa odvetví bezpečnosti, veľa útokov a veľa jazykov kde sa vždy vyskytujú iné zradnosti. Potom musíš siahnúť po niečom špeciálnom, a nie po knihe kde je php, javascript, perl a neviem či ešte niečo lebo nie som doma. Osobne sa bezpečnosti nevenujem, ale napríklad umenie exploitácie od ericssona (musím priznať že je to aj pre mňa náročné čítanie a zatiaľ jej moc nerozumiem) by mala byť taká biblia, spolu s dokonalým kodom (ktorá sa hodnotí ako povinné čítanie vývojarov microsoftu). Ak sa chceš orientovať iba na web programming, niečo podobné (úrovňou) ako bezpečný kod je ešte phishing bez záhad. Určite existuje viac ďaleko lepších kníh, ja ale podávam iba referencie z mojej knižnice, ktoré mám prečítané
eMPiko
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3085
Registrovaný: 11 jan 2007, 16:40

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa eMPiko »

No, vsetko to vyzera dobre, diky za tipy.
Holubar
Darca
Darca
Používateľov profilový obrázok
Príspevky: 3894
Registrovaný: 24 feb 2005, 21:26
Bydlisko: Senec
Kontaktovať používateľa:

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa Holubar »

Ja by som bol vdacny, keby si uviedol celu svoju kniznicu, urcite by to bola dobra inspiracia na dalsie studium.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa audiotrack »

je ich príliš veľa na to, aby som ich sem vypisoval. Knihy sú taká moja úchylka :oops:
Holubar
Darca
Darca
Používateľov profilový obrázok
Príspevky: 3894
Registrovaný: 24 feb 2005, 21:26
Bydlisko: Senec
Kontaktovať používateľa:

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa Holubar »

Mam este otazku ohladom syntaxe MySQL prikazov. Ked na konci pisem WHERE pole = premenna, je treba tu premennu osetrit funkciou mysql_real_escape_string pokial pochadza z uzivatelskeho vstupu? Alebo sa ta funkcia pouziva iba pri vkladani udajov do databazy?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa audiotrack »

akékoľvek údaje čo idú do db treba ošetrovať, sql injection je založené práve na selektoch a nie na vkladaní. Týmto by som ťa ale nerad zaviedol k domienky, že spomínanú funkciu musíš používať vždy. Častokrát je napríklad zbytočná (napríklad overenie čísla)
Holubar
Darca
Darca
Používateľov profilový obrázok
Príspevky: 3894
Registrovaný: 24 feb 2005, 21:26
Bydlisko: Senec
Kontaktovať používateľa:

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa Holubar »

Konecne mi prisla ta kniha, tak som sa do nej pustil. Mozem naozaj len odporucit, je to zaujimave citanie. Mne trochu vadi, ze sa to nespecializuje iba na php, ale aj na dalsie jazyky, ale to by som chcel asi vela.

Este som prercital len niekolko kapitol a otvorili sami dve take hlavne otazky:

1/ Po kazdom mysql_query mam este doplnene or die mysql_error, co je dobre, ked robim na localhoste a pomoze mi to najst chybu v syntaxi SQL a pod, ale v ostrej prevadzke to asi nema velky vyznam, kedze bezny uzivatel skor zavrie prehliadac, ako ma bude kontaktovat s chybou a na druhej strane by to mohlo nechcene zverejnovat informacie o strukture db. Akym sposobom to urobim, aby sa mi mysql_error zapisovalo niekde do logu zatial co uzivatelovi predlozim nejaku preddefinovanu spravu o aktualnej nefunkcnosti db?

2/ V knizke je nieco o nebezpecenstve nulovych bajtov, je to tam pisane v spojitosti s jazykom C, ale autor spomenul, ze to plati aj pre php a hlavne nebezpecenstvo uviedol ako upload suborov v tvare meno_nebezpecneho_suboru.php[nulovy bajt].jpg

Ako vyzera kontrola nuloveho bajtu? Kde este vsade okrem uploadovanych suborov sa ho oplati kontrolovat?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa audiotrack »

dávaš otázky na ktoré ti odpovie každý kto vie používať hlavu. Ak vieš čo je null byte a v čom spočíva ten útok (odseknutie zvyšku reťazca v jazykoch kde sú reťazce tvorené poľom znakov ukončené nulovým bytom a teda), tak si domyslíš kde všade sa dá uplatniť. Takisto ťa musí napadnúť aj ošetrenie - položenie daného reťazca k regulárnemu výrazu či neobsahuje "neviditeľné" znaky.
Takisto s tou chybou pri neúspešnom query, to je také náročné si to zapísať do logu a vyhodiť nejaké echo o chybe ako si písal? Nie, nie je. Zrejme vieš robiť podmienky, vieš dať do podmienky if($q) kde $q je to návravoá hodnota mysql_query() a vieš aj príkaz echo či exit (na chybu, záleží či ktorý z nich ti je v danej situácii lepší) a mal by si vedieť aj zapisovať do súboru. Neviem teda čo ti mám na otázku "akým spôsosom" odpísať, keď je to príliš triviálne a napadne to každého

(prídem domov, musím tú knihu znova prelistovať aby som ťa mohol zdrbávať za takéto veci, lebo mám pocit že sa tam zaoberajú aj správnymi riešeniami /alebo minimálne ukážu ako to byť nemá/)
Holubar
Darca
Darca
Používateľov profilový obrázok
Príspevky: 3894
Registrovaný: 24 feb 2005, 21:26
Bydlisko: Senec
Kontaktovať používateľa:

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa Holubar »

Je pravda, ze kladiem trivialne otazky, ale je to v mojej situacii normalne, kedze s php som zacal len prednedavnom, je to okrem zakladov matlabu moja jedina skusenost s programovanim, nemam ziadne zazemie z ziadnom inom jazyku. PHP manual sa mi cita len tazko, najlepsie rady dostavam tu, tak maj trpezlivost :)

Do suborov som este v php nezapisoval, preto sa pytam na nakopnutie spravnym smerom a null byte nemam sajn co je, keby nie tej knihy, tak uploadujem vsetko co konci na jpg.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa chrono »

Null byte je bajt, ktorý obsahuje nulu (nie číslo nula, ale hodnotu nula). ;)

Napr. ako aspoň trochu poznáš C tak vieš, že tam nie sú reťazce. Pre uloženie textu sa tam používajú polia a na koniec textu sa dá práve tá nula, aby potom funkcie vedeli, kde to vlastne končí.

Inak ak si dobre spomínam, tak nedávno sa objavil nejaký problém s certifikátmi, ktorý spôsobovalo práve nesprávne ošetrenie nulového bajtu (ak tam niečo obsahovalo ten nulový bajt, tak sa to zobrazovala len časť toho reťazca a vyzeralo to tak, ako keby ten certifikát pochádzal od dôveryhodnej autority).
Holubar
Darca
Darca
Používateľov profilový obrázok
Príspevky: 3894
Registrovaný: 24 feb 2005, 21:26
Bydlisko: Senec
Kontaktovať používateľa:

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa Holubar »

http://www.hakipedia.com/index.php/Poison_Null_Byte#PHP

Kód: Vybrať všetko

$file = str_replace(chr(0), '', $string);
Rozumiem dobre, ze to chr(0) je v php definicia nuloveho bytu? Alebo ta funkcia nahradi v retazci vsetky nuly prazdnym retazcom?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa audiotrack »

nahradí znaky s ordinálny číslom nula, nie nuly
Holubar
Darca
Darca
Používateľov profilový obrázok
Príspevky: 3894
Registrovaný: 24 feb 2005, 21:26
Bydlisko: Senec
Kontaktovať používateľa:

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa Holubar »

No vidis, moj problem je, ze neviem, co to je ordinalne cislo nula. Mozem tu funkciu pouzivat pri kontrolovani textovych retazcov, ktore pochadzaju od uzivatelov?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Ucinna prevencia pred utokmi v php

Príspevok od používateľa audiotrack »

ordinálne číslo je hodnota znaku v ascii tabuľke. A môžeš
Napísať odpoveď