Šta je XSS attack(napad)?

Sta je to XSS attack (Cross-site scripting)

 

XSS je tip propusta u bezbednosti web aplikacije (sajta) koji dozvoljava korisniku da ubaci (indzektuje) klijentsku skriptu na našem sajtu i naš sajt kada se učita sledeći put, prikazaće njegovu skriptu. Zako je neophodno zaštiti se. U nastavku ćemo objasniti kako.


Na primer, korisnik na našem sajtu može da ostavi svoj komentar ili neki utisak ili slično, i on umesto da bude normalan, on upiše neku javascript script-u u input polju naše forme. Submituje formu i mi je sačuvamo u našoj bazi podataka. Kada neko sledeći put otvori tu stranicu i učita u ovom slučaju sve komentare/utiske ili slično, on će učitati i nepoželjnu skriptu koji je napadač prethodno poslao putem forme i ona će se automatski izvršiti.

Na primer:


Browser(chrome, mozila, itd) će ovo pročitati kao stvarnu javascript skriptu a ne kao tekst.

Kako bi sprečili potencijalne skripte koje će napadačiti pokušati da nam kroz komentare/utiske ubace u bazu podataka i da se prikažu na web stranici kao da su stvarno skripte, mi bi trebalo da prikažemo sve komenatere/utiske kao tekst (string) koji će biti običan tekst a ne potencijalna skripta.

PHP skriptni jezik ima napravljenu predefinisanu funkciju koja će sigurno prikazati u browseru bilo kakav string iz baze podataka ili bilo koji html tag baš kao TEKST što je nama i potrebno a to je funkcija: htmlspecialchars()

Ta funkcija pretvara sve “specijalne karaktere” u TEKST. Ovako bi je trebalo koristili na našoj web aplikaciji/sajtu kako bi se zaštitili:


echo htmlspecialchars($string, ENT_QUOTES, 'UTF-8');

$string je varijabla i sadržala bi vrednost iz naše baze podataka.

Laravel php framework ima u svom blade template engine-u dva načina prikazivanja teksta (u običnom php-u to radi echo funkcija).

1. Jedan način: {{ }}  i

2. Drugi način {!! !!}.

Prvi način upravo radi prevenciju XSS napada tako što u pozadini provuče tekst iz baze kroz htmlspecialchars() funkciju, dok drugi način ne radi prevenciju XSS napada i prikaze čist tekst kako i dolazi iz baze podataka.

Tagovi: Laravel PHP Security

Komentari

Milos

Sjajan clanak, nisam verovao da cu na srpskom naci o xss napadu. Hvala

Dodaj komentar

Kontakt