User Tools

Site Tools


deserializacija

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
deserializacija [2026/06/17 15:32] – Sadržaj mitigacije promjenjen mbunicdeserializacija [2026/06/17 15:40] (current) – formatiranje i sadržaj dvaju podpoglavlja mbunic
Line 37: Line 37:
  
 ===Magične metode=== ===Magične metode===
-U PHP-u i još nekim programskim jezicima postoje tzv. **magične metode**. To su metode koje se automatski pozivaju u određenim situacijama. Objektno orijentirani jezici (primjerice Java), u modeliranju rješenja problema koriste se objektima. Objekti se mogu stvarati i uništavati te svako stvaranje objekta potakne pozivanje metode - **konstruktora**. U Pythonu je to //%%__init__%%//, u PHP-u //construct()// itd. Konstruktor je, dakle, jedan od primjera magičnih metoda. Sâmo postojanje magičnih metoda ne predstavlja ranjivost, no problem je kad se one izravno koriste podatcima koje unose korisnici jer se pozivanje tih metoda ne može spriječiti. Još je veći problem kad postoje magične metode prilikom deserijalizacije podataka kao što je slučaj u PHP-u. Metoda //unserialize()// automatski poziva metodu //%%__wakeup()%%//. Dakle, čak i ako neki podatci neće proći deserijalizaciju (primjerice, ako metoda //unserialize()// prepozna grešku), i dalje je moguće da se pokrene poziv metode //%%__wakeup()%%// i da se napravi šteta.+ 
 +U PHP-u i još nekim programskim jezicima postoje tzv. **magične metode**. To su metode koje se automatski pozivaju u određenim situacijama. Objektno orijentirani jezici (primjerice Java), u modeliranju rješenja problema koriste se objektima. Objekti se mogu stvarati i uništavati te svako stvaranje objekta potakne pozivanje metode - **konstruktora**. U Pythonu je to //%%__init__%%//, u PHP-u //construct()// itd. Konstruktor je, dakle, jedan od primjera magičnih metoda.  
 + 
 +Sâmo postojanje magičnih metoda ne predstavlja ranjivost, no problem je kad se one izravno koriste podatcima koje unose korisnici jer se pozivanje tih metoda ne može spriječiti. Još je veći problem kad postoje magične metode prilikom deserijalizacije podataka kao što je slučaj u PHP-u. Metoda //unserialize()// automatski poziva metodu //%%__wakeup()%%//. Dakle, čak i ako neki podatci neće proći deserijalizaciju (primjerice, ako metoda //unserialize()// prepozna grešku), i dalje je moguće da se pokrene poziv metode //%%__wakeup()%%// i da se napravi šteta.
  
 ===Umetanje nasumičnih objekata=== ===Umetanje nasumičnih objekata===
-U objektno orijentiranim jezicima objekt pripada nekoj klasi. Klasa se može shvatiti kao vrsta objekta, a  objekt je instanca klase. Primjerice, drveće bi se moglo modelirati klasom, a svako drvo za sebe jednim objektom. Svako drvo ima grane, listove i deblo te svako može raditi iste stvari (stvarati grane, pupove listova, odbaciti listove, promijeniti boju lista...). Na isti način, svaka klasa u programskom jeziku ima definirane atribute i metode koje se mogu zvati nad objektima koji pripadaju toj klasi. Atributi su osobine objekta, ono što on posjeduje, a metode su akcije koje objekt može obaviti ili koje se mogu obaviti nad njime.\\ + 
-Napadač može manipulirati koje će klase biti objekt poslan na deserijalizaciju. Kažemo da je umetnut //nasumičan// objekt jer u pravilu u svakoj stranici postoji mnogo klasa objekata koje se koriste pa je teško predvidjeti koju će od njih napadač odabrati da bi izazvao grešku. Uobičajeno programski jezici imaju mehanizme prepoznavanja neočekivanih tipova podataka pa će slanje objekta neke druge klase obično izazvati grešku (//error//) ili iznimku (//exception//). Ipak, to ne mora uvijek biti dovoljna zaštita jer je moguće da je objekt već ušao u sustav.+U objektno orijentiranim jezicima objekt pripada nekoj klasi. Klasa se može shvatiti kao vrsta objekta, a  objekt je instanca klase. Svaka klasa u programskom jeziku ima definirane atribute i metode koje se mogu zvati nad objektima koji pripadaju toj klasi. Atributi su osobine objekta, ono što on posjeduje, a metode su akcije koje objekt može obaviti ili koje se mogu obaviti nad njime. 
 + 
 +Napadač može manipulirati koje će klase biti objekt poslan na deserijalizaciju. Kažemo da je umetnut //nasumičan// objekt jer u pravilu u svakoj aplikaciji postoji mnogo klasa objekata koje se koriste pa je teško predvidjeti koju će od njih napadač odabrati da bi izazvao grešku. Uobičajeno programski jezici imaju mehanizme prepoznavanja neočekivanih tipova podataka pa će slanje objekta neke druge klase obično izazvati grešku (//error//) ili iznimku (//exception//). Ipak, to ne mora uvijek biti dovoljna zaštita jer je moguće da je objekt već ušao u sustav.
 \\ \\
 \\ \\
deserializacija.1781710377.txt.gz · Last modified: 2026/06/17 15:32 by mbunic

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki