Zaštita PHP aplikacija
PHP je lagan, ali veoma moćan backend programski jezik. Pokreće oko 80% globalnih web aplikacija, što ga istovremeno čini jednim od najčešće korišćenih jezika u svetu web development-a.
Razlog njegove popularnosti i široke upotrebe je njegova jednostavna struktura kodiranja i funkcije prilagođene programerima. Postoji mnogo CMS-a i framework-ova razvijenih na PHP-u a hiljade poznatih programera iz celog sveta su redovni deo njegove zajednice. Dobar primer takvog CMS-a je WordPress.
Ipak, uprkos naporima developerske zajednice, programeri uvek ostaju oprezni u pogledu ranjivosti koje ostaju neprimećene tokom razvoja aplikacije. Ove ranjivosti mogu ozbiljno da ugroze zaštitu vitalnih podataka sajta na bilo kom veb hostingu za PHP MySQL aplikacije, ostavljajući ih otvorenim za pokušaje hakovanja.
Iz tog razloga ćemo u ovom tekstu dati nekoliko saveta koji će pomoći da unapredite bezbednost vaših PHP aplikacija. Koristeći ove male savete, možete biti sigurni da će vaša aplikacija proći čak i stroge bezbednosne provere i da nikada neće biti ugrožena bilo kakvim spoljnim web napadima.
Cross-site scripting (XSS)
Cross-site scripting je jedan od najopasnijih spoljnih napada koji se izvodi ubrizgavanjem zlonamernog koda ili skripte na web sajt. To može uticati na core vaše aplikacije, jer haker može da ubaci bilo koju vrstu koda, a da to ni ne primetite. Ovaj napad se uglavnom dešava na onim web sajtovima koje prihvataju i šalju korisničke podatke.
Kod XSS napada, ubačeni kod zamenjuje originalni kod vašeg web sajta, ali radi kao stvarni kod koji remeti performanse sajta i često krade podatke. Hakeri zaobilaze kontrolu pristupa , dobijajući pristup vašim kolačićima, sesijama, istoriji i drugim vitalnim funkcijama.
Ovaj napad možete preduprediti korišćenjem specijalnih HTML karaktera & ENT_QUOTES
-a u kodovima aplikacije. Koristeći
, možete ukloniti opcije jednostrukih i dvostrukih navodnika, što vam omogućava da izbacite svaku mogućnost ovog napada.ENT_QUOTES
Cross-site request forgery (CSRF)
CSRF hakerima daje potpunu kontrolu nad aplikacijama kako bi izvršili neku zlonamernu radnju. Uz potpunu kontrolu, hakeri mogu da izvrše zlonamerne operacije prenosom zaraženog koda na vaš web sajt, što dovodi do krađe podataka, funkcionalnih modifikacija itd. Napad primorava korisnike da promene konvencionalne zahteve u izmenjene, destruktivne zahteve, poput prenosa novčanih sredstava online (bez znanja korisnika), brisanja cele baze podataka bez ikakvog obaveštenja itd.
CSRF napad se može pokrenuti samo kada kliknete na prikriveni maliciozni link koju je poslao haker. To znači da ako ste dovoljno pametni da otkrijete zaražene skrivene skripte, lako možete isključiti svaki potencijalni CSRF napad. U međuvremenu, takođe možete da koristite dve zaštitne mere za jačanje bezbednosti vaše aplikacije (npr. korišćenjem GET
zahteva u URL-u i obezbeđivanjem da se zahtevi koji nisu GET
generišu samo iz vašeg koda na strani klijenta.
Session Hijacking
Session hijacking (otmica sesije) je napad kroz koji haker krade vaš ID sesije da bi dobio pristup vašem nalogu. Koristeći taj ID sesije, haker može da potvrdi vašu sesiju tako što će poslati zahtev serveru, gde niz $_SESSION
potvrđuje uptime bez vašeg znanja. Može se izvršiti putem XSS napada ili pristupom podacima u kojima se čuvaju podaci o sesiji.
Da biste sprečili otmicu sesije, uvek povežite svoje sesije sa svojom stvarnom IP adresom. Ova praksa vam pomaže da poništite sesije kad god dođe do nepoznatog kršenja, odmah vas obaveštavajući da neko pokušava da zaobiđe vašu sesiju da bi dobio kontrolu pristupa aplikaciji.
Sprečite SQL injection
Baza podataka je jedna od ključnih komponenti aplikacije koja je uglavnom na meti hakera putem SQL injection napada. To je vrsta napada u kojoj haker koristi određene URL parametre da bi dobio pristup bazi podataka. Napad se takođe može izvršiti korišćenjem polja web forme, gde haker može da promeni podatke koje prosleđujete kroz upite. Promenom tih polja i upita, haker može da preuzme kontrolu nad vašom bazom podataka i može da izvrši nekoliko katastrofalnih manipulacija, uključujući brisanje cele baze podataka aplikacije.
Da biste sprečili SQL injection napade, uvek se savetuje da koristite parametrizovane upite. Ovi PDO upiti pravilno zamenjuju argumente pre pokretanja SQL query-a, efektivno isključujući svaku mogućnost napada SQL injekcijom. Ova praksa ne samo da vam pomaže da obezbedite svoje SQL upite, već ih čini i strukturiranim za efikasnu obradu.
Uvek koristite SSL sertifikate
Da biste dobili bezbedni prenos podataka sa kraja na kraj preko Interneta, uvek koristite SSL sertifikate u svojim aplikacijama. To je globalno priznati standardni protokol poznat kao Hipertext Transfer Protocol (HTTPS) za siguran prenos podataka između servera. Koristeći SSL sertifikat, vaša aplikacija dobija siguran način za prenos podataka, što skoro onemogućava hakere da upadnu na vaše servere.
Svi glavni web browseri kao što su Google Chrome, Safari, Firefox, Opera i drugi preporučuju korišćenje SSL sertifikata, jer obezbeđuje šifrovani protokol za prenos, prijem i dešifrovanje podataka preko interneta.
Sakrijte fajlove iz pretraživača
U mikro PHP framework-ovima postoji posebna struktura direktorijuma, koja obezbeđuje skladištenje važnih fajlova kao što su kontroleri, modeli, konfiguracioni fajl (.yaml) itd. Većinu vremena browser ne obrađuje ove fajlove, ali se one duže vreme vide u njemu, stvarajući na taj način potencijalno prostor narušavanje bezbednosti aplikacije. Dakle, uvek čuvajte svoje fajlove u public folder-u, umesto u root-u. Ovo će ih učiniti manje dostupnim u browser-u i sakriti funkcionalnosti od bilo kog potencijalnog napadača.
Zaključak
PHP aplikacije su uvek ranjive na spoljne napade, ali koristeći gore pomenute savete, možete da zaštitite core svoje aplikacije od zlonamernih napada.
Bez komentara