Dupli JSON ključevi u NestJS-u: zašto je to opasno, što drugi propuštaju i kako to rješava @pas7/nestjs-strict-json
Većina Node/Nest tehnoloških paketa tiho prihvaća duple ključeve u JSON-u (last-one-wins). To je stvaran sigurnosni i funkcionalni rizik. Ovdje su model prijetnji, usporedba alata i razlog zašto je PAS7 Studio izradio @pas7/nestjs-strict-json.

Praktični dubinski pregled za backend inženjere: model prijetnji, kako se dupli ključevi ponašaju u praksi, što popularni alati rade (i ne rade) te pristup koji smo implementirali u @pas7/nestjs-strict-json.
• Zašto dupli ključevi uopće postoje i zašto standardi upozoravaju na njih. [1]
• Zašto je “last-one-wins” parsing rizik za ispravnost i sigurnost. [2][3]
• Pregled konkurencije: što rješavaju biblioteke poput secure-json-parse (a što ne). [4]
• Kako se @pas7/nestjs-strict-json uklapa u NestJS bez nepotrebne komplikacije.
• Preporučena strategija uvođenja: strogi način rada bez rušenja produkcijskih klijenata preko noći.
Nazivi članova JSON objekta *trebali bi* biti jedinstveni kako bi ponašanje bilo predvidljivo. JSON standard eksplicitno upozorava: kad imena nisu jedinstvena, implementacije mogu imati nepredvidivo ponašanje, a neke zadržavaju zadnju vrijednost. To nije hipotetski — događa se u stvarnim parserima i stvarnim API-jima. [1]
Problem je jednostavan: različiti slojevi mogu različito interpretirati isti payload. Gateway može vidjeti prvu vrijednost, aplikacija zadnju, logiranje nešto treće, a potpis/verifikacija se može prevariti ako se serializacija/normalizacija razlikuje po komponentama. Ova klasa problema dobro je dokumentirana u sigurnosnim istraživanjima o JSON interoperabilnosti. [3]
Dupli ključevi su klasičan “izgleda bezazleno” trik. Evo tipičnih failure mode-ova koje vidimo kod timova:
• Zbunjenost u autorizaciji: proxy ili middleware provjeri jednu vrijednost, a aplikacija koristi drugu (role / scope / isAdmin).
• Zaobilaženje validacije: shema validira jednu reprezentaciju, business logika konzumira drugu.
• Nesklad audita/logova: incident response je teži kad logovi ne odgovaraju efektivnom payloadu.
• Nedosljednosti WAF/cache/signature: sigurnosni alati normaliziraju drugačije od runtime parsera (interoperability bugovi). [3]
Postoje odlične biblioteke za hardening JSON parsinga, ali mnoge ciljaju drugačiju površinu napada od duplih ključeva.
secure-json-parse (Fastify ekosustav)
Široko korišten drop-in parser fokusiran na prototype poisoning rizike poput __proto__ i constructor.prototype. Odličan je za tu kategoriju, ali to nije isto što i striktna detekcija duplih ključeva po defaultu. To je *sigurnost prototipa*, ne *semantička jedinstvenost ključeva*. [4]
Tipični NestJS stackovi (Express/Fastify default)
Većina setupa se oslanja na standardni JSON parsing i zatim radi validaciju (DTO/class-validator/zod). Ali ako se duplikati kolabiraju tijekom parsinga, validatori vide samo finalni shape — i trik je često nevidljiv.
Custom middleware / ručne provjere
Timovi ponekad zakrpaju ovo ad-hoc middlewareom. To često vodi do nekonzistentnog ponašanja po rutama, krhkih integracija s adapterima (Express vs Fastify) i manjka test pokrivenosti. Htjeli smo čist, reusabilan, Nest-native pristup.
@pas7/nestjs-strict-json
Naš fokus: detektirati i odbiti JSON s duplim ključevima rano i konzistentno, s predvidljivim ponašanjem kroz cijelu NestJS aplikaciju. Cilj kao kod “strict input contracts”: fail fast, fail loudly i uredna observability.
RFC 8259 upozorava da bi nazivi članova trebali biti jedinstveni, a kad nisu, ponašanje nije interoperabilno. Drugim riječima: “prođe parsing” nije dovoljno — bitna je *predvidljivost kroz cijeli toolchain*. [1]
Sigurnosna istraživanja idu dalje: razlike u parsingu/normalizaciji između komponenti mogu stvoriti stvarne ranjivosti (JSON interoperability issues). Dupli ključevi su čest sastojak takvih nesklada. [3]
Namjera je jednostavna: osigurati da request JSON bude *jednoznačna mapa* (bez duplih ključeva) prije nego dođe do kontrolera, DTO validacije ili business logike.
• Odbaci duple ključeve rano (prije validacije/business logike).
• Konzistentno ponašanje kroz okruženja (local, staging, production).
• Jasni, debuggable errori umjesto tihih overwriteova.
• Integracija prilagođena NestJS-u (osjeća se kao dio frameworka, ne kao nasumična skripta).
Ako već imaš klijente u stvarnom svijetu, stroge provjere inputa uvedi pažljivo. Siguran put:
• Kreni s načinom samo za izvještavanje (logiraj pojave duplih ključeva) kratko vrijeme.
• Ispravi/kontaktiraj top klijente; duplikati su često greške serializer-a.
• Postupno uključi strogo odbijanje po grupama ruta (auth/admin prvo).
• Postavi to kao platformsku politiku: “dupli ključevi su nevalidan input”. Napiši to u API contract.
Gradimo performance-first web proizvode i backend sustave i stalno nailazimo na isti problem: timovi troše vrijeme na “nemoguća stanja” uzrokovana dvosmislenim inputom. Strict JSON je mala zaštita koja sprječava cijelu klasu problema.
Zato smo open-sourceali @pas7/nestjs-strict-json: da strictness bude jednostavan, konzistentan i testabilan u NestJS projektima.
JSON standard upozorava da nejedinstvena imena vode do neinteroperabilnog ponašanja; mnoge implementacije to prihvaćaju i zadržavaju zadnju vrijednost. Upravo taj mismatch je rizik. [1][2]
secure-json-parse primarno cilja prototype poisoning (__proto__/constructor.prototype). To je odličan sloj za tu kategoriju, ali nije isto što i forsiranje jedinstvenih ključeva u JSON objektima. [4]
Validacija se obično radi *nakon* parsinga, pa često vidi samo finalni shape objekta nakon kolapsa duplikata. Strict JSON pokušava uhvatiti dvosmislenost ranije.
Počni s načinom samo za izvještavanje za payloadove s duplim ključevima, popravi top klijente, zatim postupno uključi strogo odbijanje po grupama ruta. Tretiraj to kao pravilo API ugovora.
Ključni standardi i sigurnosne reference korištene u ovom članku.
Ako ti je backend “secure by DTO”, strict parsing je često prvi korak koji nedostaje: validiraj tek nakon što je payload jednoznačan.
Povezani članci
AI SEO / GEO u 2026: vaši sljedeći kupci nisu ljudi — nego agenti
Pretraživanje se pomiče s klikova na odgovore. Botovi i AI agenti pretražuju, citiraju, preporučuju i sve češće kupuju. Saznajte što znači AI SEO / GEO, zašto klasični SEO više nije dovoljan i kako PAS7 Studio pomaže brendovima pobijediti u agentičkom webu.
Najmoćniji Apple čip? M5 Pro i M5 Max ruše rekorde
Analiza Apple M5 Pro i M5 Max čipova u ožujku 2026. Objašnjavamo zašto se ovi čipovi mogu smatrati najjačim profesionalnim laptop SoC-ovima koje je Apple dosad napravio, kako izgledaju protiv M4 Pro, M4 Max, M1 Pro, M1 Max i što pokazuju u usporedbi s aktualnim Intel i AMD konkurentima.
Automatsko označavanje i pretraga spremljenih linkova
Integracija s GDrive/S3/Notion za automatsko označavanje i brzu pretragu putem search API-ja
Razvoj botova i usluge automatizacije
Profesionalni razvoj Telegram botova i automatizacija poslovnih procesa: chatbotovi, AI asistenti, CRM integracije, automatizacija radnih tijekova.
Web razvoj za vaše poslovanje
Profesionalni razvoj modernih web aplikacija i web stranica
Usluge web razvoja
Profesionalne usluge web razvoja za poslovanje: od landing stranica do složenih web platformi s responzivnim dizajnom i SEO optimizacijom.
Profesionalni razvoj za vaše poslovanje
Kreiramo moderne web rješenja i botove za poduzeća. Saznajte kako vam možemo pomoći u postizanju ciljeva.