Passa al contenuto principale

Politica di Soppressione

"I finding di sicurezza sono fatti, non suggerimenti. Puoi ignorare lo stile, ma non puoi ignorare una breccia."

Il sistema di soppressione di Zenzic permette agli autori di dichiarare eccezioni validate — deviazioni intenzionali che non sono difetti. È uno strumento di precisione, non una via di fuga.


Sintassi di Soppressione per Riga

La soppressione è format-aware e opera a livello di riga. Aggiungi un commento alla fine della riga che genera il finding:

File Markdown (.md):

Quartz era precedentemente noto come Obsidian. <!-- zenzic:ignore Z905 -->

File MDX (.mdx):

Quartz era precedentemente noto come Obsidian. {/* zenzic:ignore Z905 */}

Entrambe le forme di commento sono invisibili nell'output renderizzato: i processori Markdown trattano i commenti HTML come non-renderizzati, e Docusaurus/React tratta {/* */} come spazio bianco JSX. La distinzione è importante: usare il tipo di commento sbagliato nel formato di file sbagliato farà sì che la soppressione venga silenziosamente ignorata.

Per sopprimere più codici sulla stessa riga, aggiungi un commento per ogni codice:

Alcune riga. {/* zenzic:ignore Z107 */} {/* zenzic:ignore Z905 */}

Posizione Raccomandata: Trailing (In Coda)

Il commento dovrebbe trovarsi sempre alla fine della riga (o alla fine della cella nelle tabelle Markdown), dopo tutto il contenuto. Questo segue la convenzione industriale stabilita da # noqa (Python), // eslint-disable-line (JavaScript) e // lint:ignore (Go).

Prosa / liste: Commento alla fine assoluta della riga.

- **Riferimento storico** — Quartz era precedentemente noto come Obsidian. <!-- zenzic:ignore Z905 -->

Tabelle Markdown: Commento alla fine dell'ultima cella, prima del pipe di chiusura.

| [Sezione](#sezione) | Descrizione di questa sezione. <!-- zenzic:ignore Z107 --> |
Perché trailing?

Positionare zenzic:ignore alla fine della riga:

  1. Separa contenuto da istruzione — il messaggio per l'utente non viene interrotto.
  2. Abilita la scansione visiva — scorri il bordo destro di un file per vedere tutte le soppressioni attive.
  3. Evita la rottura della prosa — i commenti inseriti a metà frase interrompono la lettura.

Codici Sopprimibili vs Inviolabili

Zenzic divide i codici di finding in due classi: Sopprimibili (l'intenzione dell'autore è sovrana) e Inviolabili (i fatti di sicurezza non possono essere dichiarati falsi positivi).

CodiceNomeSopprimibile?
Z101LINK_BROKEN✅ Sì
Z102ANCHOR_MISSING✅ Sì
Z103ORPHAN_LINK✅ Sì
Z104FILE_NOT_FOUND✅ Sì
Z105ABSOLUTE_PATH✅ Sì
Z106CIRCULAR_LINK✅ Sì
Z107CIRCULAR_ANCHOR✅ Sì
Z201SHIELD_SECRET🔒 Mai
Z202PATH_TRAVERSAL🔒 Mai
Z203PATH_TRAVERSAL_FATAL🔒 Mai
Z301DANGLING_REF✅ Sì
Z302DEAD_DEF✅ Sì
Z303DUPLICATE_DEF✅ Sì
Z401MISSING_DIRECTORY_INDEX✅ Sì
Z402ORPHAN_PAGE✅ Sì
Z403MISSING_ALT✅ Sì
Z404CONFIG_ASSET_MISSING✅ Sì
Z501PLACEHOLDER✅ Sì
Z502SHORT_CONTENT✅ Sì
Z503SNIPPET_ERROR✅ Sì
Z504QUALITY_REGRESSION✅ Sì
Z505UNTAGGED_CODE_BLOCK✅ Sì
Z901RULE_ENGINE_ERROR✅ Sì
Z902RULE_TIMEOUT✅ Sì
Z903UNUSED_ASSET✅ Sì
Z904NAV_CONTRACT✅ Sì
Z905BRAND_OBSOLESCENCE✅ Sì
La Legge dell'Inviolabilità — CEO-152

zenzic:ignore Z201, zenzic:ignore Z202 e zenzic:ignore Z203 vengono silenziosamente rifiutati. Lo Shield e il Blood Sentinel operano indipendentemente dal motore di soppressione. Anche se un commento zenzic:ignore è presente sulla stessa riga di una credenziale, Zenzic emetterà comunque il finding e uscirà con il codice 2 o 3.

Non puoi ignorare una breccia.


Interazione con la Modalità --strict

--strict e zenzic:ignore operano a livelli diversi della pipeline di analisi:

  1. Fase di rilevamento: Zenzic trova una violazione (es. Z402 Pagina Orfana, severità warning).
  2. Filtro di soppressione (ignore): Se la riga porta zenzic:ignore Z402, la violazione viene distrutta. Per Zenzic, non è mai esistita.
  3. Valutazione della severità (strict): --strict promuove i warning sopravvissuti ad errori. Agisce solo sulle violazioni che hanno superato il passaggio 2.

La conseguenza: Inibire un finding tramite zenzic:ignore lo rimuove effettivamente dallo stream di audit. Anche in modalità --strict, i finding ignorati non causeranno un codice di uscita non-zero — sono considerati eccezioni validate dichiarate dall'autore.

Stato del finding--strict?Exit codeMotivo
Warning presenteNo0Il warning è tollerato di default
Warning presente1--strict promuove il warning ad errore
Warning + ignoreNo0L'autore ha dichiarato un'eccezione validata
Warning + ignore0L'intento vince sul rigore
Z201/Z202/Z203Qualsiasi2 o 3Inviolabile — la soppressione viene rifiutata

Quando Sopprimere vs Quando Correggere

La soppressione è un atto di intento documentato, non di evasione. In un repository git, un commento zenzic:ignore è una dichiarazione firmata che l'autore ha esaminato il finding e lo ha considerato un'eccezione legittima. La soppressione dovrebbe essere usata per:

  • Link di navigazione ToC[Nome Sezione](#nome-sezione) è un pattern ToC in-page comune che attiva Z107. Sono intenzionali e sopprimibili.
  • Riferimenti storici al brand — Le voci di CHANGELOG, guide di migrazione e documentazione storica possono legittimamente nominare codename obsoleti (Z905).
  • Pagine intenzionalmente brevi — Un glossary.md con definizioni concise può essere sotto la soglia di conteggio parole Z502 per design.

La soppressione non dovrebbe essere usata per:

  • Nascondere un link veramente rotto invece di correggere il target.
  • Silenziare una pagina orfana Z402 invece di aggiungerla alla navigazione.
  • Bypassare Z201 per "documentare" una credenziale reale.

Vedi Anche