Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zaštitia "starijih" aplikacija

[es] :: PHP :: Zaštitia "starijih" aplikacija

[ Pregleda: 1870 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

djordjevic_i
Ivan Djordjevic
Tf Cacak
Cacak

Član broj: 212093
Poruke: 176
*.static.sbb.rs.

Sajt: www.codeart.in.rs


+2 Profil

icon Zaštitia "starijih" aplikacija27.02.2014. u 14:36 - pre 123 meseci
Pozdrav, poslednjih 7-8 meseci sam se izuzetno zaintrigirao za zaštitu Web aplikacija i do tada nisam imao predstavu koliko nisam bio svestan svoje nesvesti. Naime, zanimaju me iskustva drugih korisnika, vezanih za zaštitu. naime, kako najbezbednije zaštiti mysql bazu od SQL Injection-a ukoliko niste u mogućnosti što zbog same verzije platforme, što zbog bilo kojih drugih razloga koristiti "prepared statements" i "parameterized queries". Ukoliko koristim sanitizaciju promenljivih koje prosledjujem $_POST, ili $_GET metodom, i sprecim skolski primer umetanja malicioznog kooda kroz promeljve koje prosledjujem, da li sam i ako jesam, ukoliko sam u toj meri zasticen od SQL Injection-a. Šta je sa XSS napadima, da li su kao preventiva dovoljne samo tehnike tipa: "Data escaping" koristeci standardne php funkcije tipa strip_tags(), htmlspecialchars()... sanitizacija, validacija. Koje su još to ranjive tačke, na koje se u globalu retko obraća pažnja. Moguće da je tema glupa, ponovljena,ali, u globalu, želeo bih da čujem i mišljenje ostalih po ovoj temi.
Ivan Djordjevic
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-13.sezampro.rs.



+33 Profil

icon Re: Zaštitia "starijih" aplikacija27.02.2014. u 21:37 - pre 123 meseci
Što se tiče SQL injection-a, korišćenje prepared statement-a je najbolji, pravi vid zaštite i to je jedino što treba koristiti za odbranu od te vrste napada, tačka. SQL injection apsolutno nije moguće ako se koriste prepared statement-i. Naravno, ako se koriste na pogrešan način, tj ako developer sam, ručno "lepi" parametre u query string, i takvog ga šalje na pripremu, umesto da ih bind-uje u prethodno postavljene placeholder-e u upitu, napradi su i te kako mogući.

Sa XSS-om je stvar drugačije prirode, jer taj vid bezbednosnog propusta ne može da naškodi tvojoj aplikaciji, koliko recimo posetiocu tvog sajta. Tipa imaš neki commenting sistem, zlonameran korisnik pošalje neki HTML u poruci, ti to ne filtriraš pri submit-u, a ni ne escape-uješ pri ispisu, a onda dođe korisnik na tvoj sajt, koji je prethodno bio na nekog drugom sajtu i pritom ostao ulogovan na njemu. I sad, au tom HTML-u, zlonamerni korisnik je mogao da ubaci sliku, tj <img> tag, čiji src atribut puca na akciju za brisanje naloga na tom nekom drugom sajtu, na kojem nesrećni korisnik ima nalog. I po učitavanju tvoje stranice, nakon što se "učita" slika, korisnik ostaje bez naloga na svom sajtu. Tu se naravno vidi da i taj drugi sajt ima problem, jer samim tim što je tako neki request prošao, znači da je on podložan CSRF napadima.
Što se tiče prevencije XSS napada, već sam pomenuo filtriranje i/ili escape-ovanje. Kažem i/ili iz razloga što može biti dovoljno jedno ili drugo. Konkretno u tom primeru, ako odlučiš da strip-ujes sav HTML iz komentara u principu ne moraš da ga escape-uješ pri ispisu. A ako ga ne izbaciš, ali escape-uješ komentar, opet si rešio problem, jer HTML neće biti renderovan, već ispisan kao escape-ovan tekst.

A kad smo kod CSRF napada, najefikasniji vid zaštite jeste u vidu tokena u formama, prethodno generisan na server strani, upisan u sesiju, a zatim ispisan u vidu skrivenog polja u formi. Validacija te forme onda između ostalog uključuje i upoređivanje poslatog tokena iz hidden polja sa onim zapamćenim u sesiji. Tako da, ako neko pokuša spolja, nekom skriptom, da uradi submit te neke forme na tvom sajtu, neće moći, jer mora da pogodi taj token generisan i upisan u sesiju. Imajući to u vidu, jasno ti je zašto onaj gore primer ne bi prošao, da je taj drugi sajt imao CSRF zaštitu, jer u tom src-u slike, zlonamerni korisnik bi morao da nagađa i šalje i taj token kao parametar.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
109.121.51.*



+33 Profil

icon Re: Zaštitia "starijih" aplikacija03.03.2014. u 21:53 - pre 123 meseci
Takođe, po mom mišljenju, jedno od najboljih štiva/resursa kada je reč o pitanjima bezbednosti softvera (nezavisno o programskom jeziku) jeste OWASP. Konkretno, sekcije tog sajta na koje treba obratiti pažnju su:
https://www.owasp.org/index.php/Cheat_Sheets
https://www.owasp.org/index.php/Top_10_2013-Top_10
https://www.owasp.org/index.php/Category:Code_Snippet
 
Odgovor na temu

djordjevic_i
Ivan Djordjevic
Tf Cacak
Cacak

Član broj: 212093
Poruke: 176
*.static.sbb.rs.

Sajt: www.codeart.in.rs


+2 Profil

icon Re: Zaštitia "starijih" aplikacija08.03.2014. u 09:42 - pre 123 meseci
Nikola, zaista potpun i jasan odgovor. Kako cemo sql injection zastitom na starijim aplikacijama, gde nismo u mogucvnosti koristiti prepared statements...?
Ivan Djordjevic
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.rs.



+33 Profil

icon Re: Zaštitia "starijih" aplikacija08.03.2014. u 19:41 - pre 123 meseci
A šta tačno podrazumevaš pod tim: "nismo u mogućnosti da koristimo prepared statements"? Starija verzija PHP-a, legacy kôd, nešto treće? I u kakvoj si uopšte poziciji, jel pišeš nešto novo od nule, ili prepravljaš postojeći kôd?

Šta god da je u pitanju, ne vidim razlog nekorišćenja prepared statement-a i parametrizovanih upita. PDO je u paketu sa PHP-om od verzije 5.1, tako da opravdanje za nekorišćenje PDO-a može da bude samo neka starija verzija PHP-a, mada mislim da i pored toga može ručno da se instalira. Druga opcija bi bila Mysqli ekstenzija (unapređena mysql ekstenzija), koja takođe podržava prepared statements.

Kažem, prepared statements mehanizam jednostavno nema alternativu, jer svaki drugi vid prevencije SQL injection-a, tipa korišćenje onih nekih mysql escape f-ja je pogrešan i nedelotvoran.
 
Odgovor na temu

djordjevic_i
Ivan Djordjevic
Tf Cacak
Cacak

Član broj: 212093
Poruke: 176
*.static.sbb.rs.

Sajt: www.codeart.in.rs


+2 Profil

icon Re: Zaštitia "starijih" aplikacija10.03.2014. u 11:51 - pre 123 meseci
Loše sam se izrazio. Imam neku stariju aplikaciju, gde je krosicena mysql_connect funkcija... , to su prevesti svakako na mysqli ili pdo.
Ivan Djordjevic
 
Odgovor na temu

[es] :: PHP :: Zaštitia "starijih" aplikacija

[ Pregleda: 1870 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.