Barcha darslar

Usta ยท 11/12

๐Ÿ›ก๏ธ Xavfsizlik va katta hajm

Prototype pollution, JSON hijacking, hajm limitlari, streaming parsing.

Prototype pollution

{"__proto__": {"isAdmin": true}} โ€” ishonchsiz JSON'ni chuqur merge qilsang, butun ilova buziladi. __proto__, constructor, prototype kalitlarini filtrla yoki Object.create(null) ishlat.

Hajm bombasi: 50 MB lik yoki 10 000 qavat chuqurlikdagi hujjat parserni va xotirani o'ldiradi. Server tomonda body limit (masalan 1 MB) va chuqurlik limitini o'rnat.

Xavfsiz o'qish namunasi
{
  "limit_bytes": 1048576,
  "max_depth": 32,
  "reject_keys": ["__proto__", "constructor", "prototype"]
}
XavfHimoya
JSON ichida HTML/JSChiqishda escape qil, innerHTML'ga to'g'ridan-to'g'ri berma
eval() bilan parseHech qachon. Faqat JSON.parse
Ma'lumot sizib chiqishiJavobga parol/token/hash qo'shma โ€” ochiq maydonlarni oq ro'yxatla
Katta faylStreaming parser (ijson, clarinet, SAX-uslub) yoki JSONL
Ishonchsiz raqamSchema bilan minimum/maximum tekshir

Tezlik

JSON.parse odatda tezroq ishlaydi, chunki u native. Katta massivlarni parse qilishdan oldin serverda kerakli maydonlarni tanlab yubor (sparse fields).

๐Ÿ›  Mashq: Xavfli kalitli hujjatni yozib, uni nima uchun filtrlash kerakligini o'ylab ko'r.

mashq.json
Uy mustahkam โ€” JSON to'g'ri โœ…

Tekshiruv testi

1. JSON'ni parse qilishning to'g'ri usuli?

2. Juda katta JSON faylni qanday o'qish kerak?