{"id":"c1147","filename":"c1147_arhiva_sigurnost_demo_off_lista_failclosed.dok.json","weise3_id":"c1147","tip":"SIGURNOST_HITNO","naziv":"Arhiva: DEMO token off + erp_arhiva_lista fail-closed (Staza A)","kreator":"CC + Ivan","datum":"2026-05-27","snippet":"","status":"","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"SIGURNOST_HITNO","naziv":"Arhiva: DEMO token off + erp_arhiva_lista fail-closed (Staza A)","datum":"2026-05-27","autor":"CC + Ivan","prioritet":"P0 — izlaganje tuđih podataka u živom sustavu","kontekst":"Analiza arhiva modula otkrila dva buga koji izlažu stvarne podatke. Staza A: zakrpi odmah bez čekanja arhitekturalne odluke. Staza B (OCR V3/V4) čeka.","zakrpe":[{"id":"A1","naziv":"DEMO token uklonjen iz scan_html()","opis":"elif token == 'DEMO': pass blok uklonjen. Nepostojeći token sada vraća is_active: False umjesto aktivnog stanja.","linija_stara":"602-607","rizik":"Bilo tko je mogao uploadati bez autentikacije na fiksni company_id DEMO tvrtke"},{"id":"A2","naziv":"DEMO fallback uklonjen iz scan_upload()","opis":"token != 'DEMO' uvjet uklonjen. Sada: nema company_id = 404, bez izuzetaka.","linija_stara":"642-648","rizik":"Isto kao A1 — uploadani fajlovi bili vidljivi pod DEMO company_id"},{"id":"B","naziv":"erp_arhiva_lista fail-closed","opis":"Bez company_uuid sada baca 400 umjesto vraćanja svih dokumenata svih kompanija. WHERE company_id = company_uuid obavezan.","linija_stara":"1256-1258","rizik":"Genesis token bez company_id u payloadu vraćao je dokumente SVIH kompanija — cross-company data leakage"}],"fajlovi":["archive/router.py (MAR, /var/www/fenix-v4/)"],"zakoni":["ZAKON 0","ZAKON 29","ZAKON 40"],"staza_b":"V3/V4 OCR arhitekturalna odluka čeka — tasks.py mješavina ArhivaEntry/ArchiveDoc, 'archive.tasks.process_doc' task ne postoji u V4 kontekstu","prethodni_entry":"c1146_brsljani_mldsa_gossip_bft.dok.json","weise3_id":"c1147","created_at":"2026-05-27T05:30:00Z"}}