Sigurno kodiranje u PHP-u
Prateći neke blogove i mailing liste stekao sam utisak da je od početka ove godine u PHP zajednici ukazivanje na probleme sigurnosti u PHP skriptovima mnogo obimnije nego ranije. PHP je jezik koji dozvoljava “prljavo” kodiranje - jednostavnim pozivima neke od gomile ugrađenih funkcija lako je napraviti kod koji odrađuje posao. Međutim, PHP programeri često zaboravljaju na osnovne principe sigurnosti pri pisanju koda tako da je dizajn mnogih od najpopularnijih PHP sistema (čitaj phpBB) potpuno promašen što se sigurnosti tiče.
Ali kao što rekoh, pritisnuti sve većom prijavom problema u popularnim sistemima, PHP ekipa je morala da se zaštiti i da jasno stavi do znanja da problem nije do PHP-a nego do samog koda koji je u njemu napisan (kao što greške u Linux-u nisu problem C-a, već…). U skladu sa tim sada već postoji gomila literature, tekstova, tutoriala koji ukazuju na najšesže probleme vezane za sigurnost PHP aplikacija. Sledi lista sa komentarima:
Obavezno pogledajte da li Vaš kod ne sadrži 10 najčešćih grešaka objavljenih na ovom spisku. Lista sadrži ponuđena rešenja za otklanjanje Top10 sigurnosnih grešaka u web aplikacijama, a koje su objavili ljudi koji stoje iza OWASP-a.
Dalje, tekstove koje je za Security Corner rubriku php | arch magazina napisao Chris Shiflett, mozete pogledati na njegovom sajtu/blogu. Tu ima raznoraznih stvari - od sigurnosti u shared hosting okruzenju, preko validacije ulaznih podataka, rešenja protiv Cross-Site Scripting napada i slično. Obavezno pogledati. Naravno, i sam blog je super! Stoji da treba pogledati i PDF dokument istog autora sa prošlogodišnjeg ApacheCon-a. Dokument u PDF formatu se nalazi ovde. |
Dalje, nedavni problem koji se pojavio sa phpBB-om (da nije i Vaš kod ugrožen?) je problem implementacije stalnog logina preko kolačića - nešto što postoji na skoro svakoj lokaciji koja sadrži nekakav login. Dakle, pravac na čitanje unosa koji je za svoj blog sastavio Charles Miller.
Slajdovi sa PHP izlaganja koja su bila posvećena sigurnosti - naravno na talks.php.net. Manje više opet iste stvari - ali u tome i jeste kvaka. Uvek se pojavljuju manje više iste stvari.
Detaljno o SQL Injection-u. Ovo je nešto čega većina programera koji u kodu napišu “SELECT * FROM users WHERE name=’$name’” nisu ni svesni. Pogledajte i prateće resurse na koje je ukazano u tekstu.
Jedna od stvari koje su pokrenute na početku ove godine je i http://phpsec.org ili “PHP Security Consortium”. Njihovo delo je fenomenalan i obiman dokument “PHP Security Guide”. Valja ga pročitati, ako ne to onda makar proleteti kroz primere.
Naravno na kraju - ono odakle treba i početi: Security sekcija PHP Manual-a.
Za nove informacije prijavite se na phpsec listu koju je pokrenuo Marco Tabini (php | arch, za one koji nisu upoznati) - adresa je http://www.phparch.com/phpsec/. Na listi aktivno učestvuje gomila poznatih ljudi iz PHP zajednice, a pored obaveštenja o pronađenim greškama, na listi se redovno vode i raznorazne diskusije. Obim liste nije veliki, tako da ne iziskuje puno vremena i ima uglavnom dobar signal/noise odnos. (mada se ponekad dogodi flame na neku od tema, pa onda je neophodno malo proširiti filtere u omiljenom programu za prijem pošte) |
Pozdrav, i sigurno kodiranje!