Truthiness è un'abitudine di programmazione in cui un valore viene trattato come "vero" in base a come viene interpretato, non in base al fatto che sia effettivamente un risultato di successo valido. In molti linguaggi, stringhe non vuote, numeri diversi da zero e alcuni oggetti di errore possono valutare come veri, a meno che il codice non li controlli esplicitamente. Questo rende il truthiness comodo nella logica applicativa normale, ma pericoloso nei percorsi sensibili alla sicurezza.
Nella sicurezza informatica, i bug legati al truthiness compaiono spesso nell'autenticazione, nella verifica delle firme e nei controlli di controllo degli accessi. Se una funzione restituisce un codice di errore o un oggetto di fallimento e il chiamante verifica solo se il valore di ritorno è truthy, una verifica fallita può essere scambiata per un successo. Gli aggressori cercano questo tipo di errore perché può trasformare un accesso negato o un token non valido in una sessione autenticata. I difensori riducono il rischio usando confronti rigorosi, controllando i valori esatti di successo e trattando ogni stato di ritorno inatteso come un fallimento grave.


