deserializacija
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| deserializacija [2026/06/17 13:44] – mbunic | deserializacija [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 // | + | |
| + | 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 // | ||
| + | |||
| + | 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 // | ||
| ===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. | + | |
| - | Napadač može manipulirati koje će klase biti objekt poslan na deserijalizaciju. Kažemo da je umetnut // | + | U objektno orijentiranim jezicima objekt pripada nekoj klasi. Klasa se može shvatiti kao vrsta objekta, a objekt je instanca klase. |
| + | |||
| + | Napadač može manipulirati koje će klase biti objekt poslan na deserijalizaciju. Kažemo da je umetnut // | ||
| \\ | \\ | ||
| \\ | \\ | ||
| Line 104: | Line 109: | ||
| Radi prevencije nesigurne deserijalizacije preporučuje se koristiti formate koji pohranjuju samo podatke i strukturu (poput JSON-a ili XML-a) umjesto izvornih serijalizacija programskih jezika kada je to moguće. Na taj se način znatno smanjuje površina napada. | Radi prevencije nesigurne deserijalizacije preporučuje se koristiti formate koji pohranjuju samo podatke i strukturu (poput JSON-a ili XML-a) umjesto izvornih serijalizacija programskih jezika kada je to moguće. Na taj se način znatno smanjuje površina napada. | ||
| + | Kada se izvorna serijalizacija ne može izbjeći, preporučuje se ograničiti skup klasa koje se smiju deserijalizirati (whitelist pristup). Ako se tijekom deserijalizacije pronađe klasa koja nije na popisu dopuštenih, | ||
| Poželjno je koristiti kriptografske potpise serijaliziranih podataka. Prije deserijalizacije treba provjeriti postojanje i validnost potpisa, te odbaciti podatke ako potpis nije važeći. | Poželjno je koristiti kriptografske potpise serijaliziranih podataka. Prije deserijalizacije treba provjeriti postojanje i validnost potpisa, te odbaciti podatke ako potpis nije važeći. | ||
| - | Programski jezici pružaju mehanizme za kontrolu procesa serijalizacije. Primjerice, u Javi postoji sučelje // | + | Programski jezici pružaju mehanizme za kontrolu procesa serijalizacije. Primjerice, u Javi postoji sučelje // |
| - | Postoje mnogi alati i biblioteke čija je zadaća | + | Postoje mnogi alati i biblioteke čija je zadaća |
deserializacija.1781703859.txt.gz · Last modified: 2026/06/17 13:44 by mbunic