Criteri di successo WCAG · Level AA

WCAG 3.3.4: Prevenzione degli errori (legali, finanziari, dati)

WCAG 3.3.4 richiede che gli invii sul web che comportano impegni legali, transazioni finanziarie o dati sensibili possano essere verificati, corretti o annullati prima della finalizzazione. Questo protegge tutti gli utenti — in particolare quelli con disabilità cognitive e motorie — da errori irreversibili e ad alto rischio.

Cosa Significa Questa Regola

Il Criterio di Successo WCAG 3.3.4, intitolato Prevenzione degli errori (legali, finanziari, dati), è un requisito di Livello AA nell’ambito del Principio 3 (Comprensibile) e della Linea guida 3.3 (Assistenza all’inserimento). Si applica in modo specifico alle pagine web in cui gli utenti possono generare impegni legali o transazioni finanziarie, oppure in cui l’utente modifica o elimina dati controllabili dall’utente in un sistema di archiviazione dei dati.

Il criterio impone che per qualsiasi invio di questo tipo sia fornita almeno una delle seguenti tre misure di salvaguardia:

  • Reversibile: L’invio può essere annullato dopo che è stato effettuato. Ad esempio, un ordine può essere cancellato entro una finestra temporale definita, oppure un record eliminato può essere ripristinato.
  • Verificato: I dati inseriti dall’utente vengono controllati per individuare errori di input e all’utente viene data l’opportunità di correggere tali errori prima che l’invio sia finalizzato.
  • Confermato: È fornito un meccanismo per rivedere, confermare e correggere le informazioni prima dell’invio finale. Questo assume tipicamente la forma di un riepilogo o di una fase di revisione prima che un pulsante di invio completi la transazione.

È importante notare che è sufficiente soddisfare solo una di queste tre condizioni per superare il criterio. È sufficiente fornire una fase di revisione e conferma, così come è sufficiente offrire una finestra di cancellazione dopo l’invio, così come una solida validazione in tempo reale con possibilità di correzione. La prassi migliore, tuttavia, è combinare più misure di salvaguardia.

Ambito del criterio: La regola si applica a tre categorie di transazioni. In primo luogo, copre gli impegni legali come l’iscrizione a un abbonamento, l’accettazione di un contratto o l’invio di un modulo legale vincolante. In secondo luogo, copre le transazioni finanziarie, incluse gli acquisti, i trasferimenti di fondi, le richieste di prestito e i pagamenti di bollette. In terzo luogo, copre qualsiasi azione che modifichi o elimini dati controllati dall’utente in un sistema di archiviazione dei dati — ad esempio, l’aggiornamento delle informazioni del profilo, l’eliminazione di file da un servizio cloud o la modifica di record in un pannello amministrativo.

Un superamento si presenta così: un checkout di e-commerce che mostra un riepilogo dell’ordine con un link "Modifica" e un pulsante "Effettua ordine" come fase finale. Un fallimento si presenta così: un modulo di acquisto su un’unica pagina in cui facendo clic su "Acquista ora" la carta viene addebitata immediatamente, senza schermata di revisione, senza opzione di cancellazione e senza fase di validazione.

Il criterio prevede un’eccezione definita: non si applica ai moduli in cui l’invio di informazioni errate non ha conseguenze rilevanti e l’invio può essere ripetuto in modo banale. I semplici moduli di contatto o le iscrizioni a newsletter generalmente rientrano al di fuori dell’ambito, sebbene le buone pratiche incoraggino comunque la validazione su tali moduli.

Perché È Importante

Gli errori durante transazioni ad alto rischio possono avere conseguenze gravi, talvolta irreversibili: denaro trasferito al conto sbagliato, un accordo legale firmato sulla base di presupposti errati, cartelle cliniche aggiornate con informazioni non corrette o un abbonamento acquistato al livello sbagliato. Per gli utenti senza disabilità, individuare e correggere questi errori è spesso semplice. Per molti gruppi di persone con disabilità, può essere estremamente difficile o persino impossibile senza le misure di salvaguardia richieste da questo criterio.

Utenti con disabilità cognitive — inclusi coloro con dislessia, ADHD, deficit di memoria o disabilità intellettive — hanno maggiori probabilità di commettere errori di inserimento dati e minori probabilità di notarli prima di fare clic su invia. Una schermata di revisione offre loro il tempo e la chiarezza necessari per individuare gli errori. Secondo l’Organizzazione Mondiale della Sanità, circa 1 miliardo di persone nel mondo vive con una qualche forma di condizione cognitiva, neurologica o di salute mentale che influisce sul funzionamento quotidiano.

Utenti con disabilità motorie che si affidano a sistemi di accesso a scansione, dispositivi di tracciamento oculare o tastiere alternative sono soggetti ad attivazioni accidentali e pressioni involontarie di tasti. Una fase di conferma funge da cuscinetto critico: anche se "Invia" viene attivato per errore, l’utente ha un’altra opportunità di annullare prima che la transazione sia completata. Senza questa salvaguardia, un singolo tocco accidentale potrebbe innescare una transazione finanziaria che l’utente non può annullare.

Utenti di screen reader che navigano moduli lunghi in modo lineare potrebbero non avere una visione d’insieme di ciò che hanno inserito. Un riepilogo vocale nella fase di conferma — che rilegge i valori inseriti — consente loro di individuare errori che non potrebbero scansionare visivamente.

Utenti con ansia o difficoltà di attenzione traggono enorme beneficio dal sapere che esiste una rete di sicurezza. Le ricerche mostrano costantemente che quando gli utenti percepiscono un processo come tollerante agli errori, interagiscono con maggiore sicurezza e abbandonano le transazioni meno frequentemente. Ciò avvantaggia direttamente i tassi di conversione e la soddisfazione degli utenti, rendendo la conformità al criterio 3.3.4 un vantaggio commerciale oltre che un obbligo etico.

Scenario reale: Un’utente ipovedente a Istanbul sta prenotando un volo nazionale utilizzando uno screen reader. Seleziona una data ma passa accidentalmente oltre il campo del numero di passeggeri, lasciandolo al valore predefinito di due passeggeri invece di uno. Se il sito di prenotazione addebita la carta nel momento in cui lei attiva "Conferma", avrà acquistato due biglietti e potrebbe incorrere in penali su tariffe non rimborsabili. Una schermata di revisione che legge ad alta voce "1 passeggero: Ayşe Yılmaz, da Ankara a Istanbul, 14 marzo, Economy — Totale: ₺850" le permetterebbe di individuare immediatamente l’errore.

Regole Axe-core Correlate

WCAG 3.3.4 richiede test manuali. Nessuna regola automatizzata di axe-core mappa direttamente a questo criterio perché le misure di salvaguardia che richiede — reversibilità, validazione con opportunità di correzione e fasi di conferma — riguardano il flusso dell’applicazione e la logica di business, non la struttura del markup o gli attributi del DOM. Gli strumenti automatizzati possono analizzare HTML e ARIA, ma non possono determinare se un pulsante "Paga ora" attiva un addebito irreversibile, se esiste una politica di cancellazione o se i dati mostrati in una schermata di revisione riflettono accuratamente ciò che è stato inserito.

  • Perché l’automazione non può rilevarlo: Uno scanner automatizzato vede un elemento <button> con il testo "Invia" e un markup valido. Non ha modo di sapere se l’attivazione di quel pulsante avvia una transazione finanziaria vincolante, se seguirà una finestra di conferma o se la transazione potrà essere annullata in seguito. Si tratta di decisioni architetturali e di UX che esistono a un livello superiore rispetto ai singoli nodi del DOM e richiedono un tester umano che comprenda l’intero percorso utente.
  • Segnali parziali da cercare durante le scansioni automatizzate: Sebbene axe-core non segnali direttamente violazioni del criterio 3.3.4, gli auditor talvolta usano axe per identificare problemi correlati che aumentano il rischio — come l’assenza di attributi autocomplete sui campi di pagamento (rilevante per 1.3.5), messaggi di errore mancanti (rilevante per 3.3.1 e 3.3.3) o etichette mancanti sui controlli dei moduli (rilevante per 1.3.1 e 4.1.2). Questi errori correlati rendono la prevenzione degli errori ancora più difficile da ottenere.
  • Approccio di audit manuale raccomandato: I tester dovrebbero mappare ogni percorso utente che comporta un invio legale, finanziario o di modifica dei dati, quindi valutare ciascun percorso rispetto ai tre criteri: Esiste un modo per annullarlo? È presente una validazione in linea con opportunità di correzione? Esiste una fase di revisione e conferma? Il mancato rispetto di tutti e tre in uno qualsiasi di questi percorsi costituisce un fallimento del criterio 3.3.4.

Come Testare

  1. Inventariare i moduli ad alto rischio: Prima di iniziare i test, creare un elenco di tutti i moduli o flussi interattivi sul sito che comportano transazioni finanziarie (checkout, pagamento, fatturazione), impegni legali (firma di contratti, attivazione di abbonamenti, moduli di consenso) o modifica/eliminazione di dati (modifica del profilo, eliminazione di file, rimozione dell’account). Solo questi flussi rientrano nell’ambito del criterio 3.3.4.
  2. Eseguire una scansione automatizzata per problemi correlati: Utilizzare axe DevTools o Lighthouse per identificare errori di accessibilità a livello di modulo su ciascuna pagina in ambito. Sebbene questi strumenti non segnalino direttamente il criterio 3.3.4, la risoluzione di problemi come etichette mancanti, attributi autocomplete assenti e mancanza di annunci degli errori stabilisce una base di qualità del modulo prima di valutare la misura di prevenzione degli errori.
  3. Testare la salvaguardia "Verificato": Inviare deliberatamente ciascun modulo in ambito con errori intenzionali — cifre invertite in un numero di carta, una data non valida, un campo di conferma email non corrispondente. Osservare se il sistema blocca l’invio, identifica l’errore specifico, descrive come correggerlo (in conformità con 3.3.3) e mantiene l’utente sul modulo per effettuare le correzioni. Se il modulo viene inviato silenziosamente o mostra solo un errore generico senza identificare quale campo è fallito, questa salvaguardia non è soddisfatta.
  4. Testare la salvaguardia "Confermato": Compilare ciascun modulo in ambito con dati validi e seguire l’intero flusso. Verificare se viene presentata una fase di revisione prima dell’invio finale. Verificare che la fase di revisione mostri tutti i dati inseriti in un formato leggibile, includa un meccanismo per tornare indietro e modificare e richieda un’azione finale deliberata per completare l’invio. Utilizzando NVDA con Firefox e JAWS con Chrome, navigare questa fase di revisione con uno screen reader per confermare che tutti i valori vengano annunciati e che i controlli di modifica e conferma siano raggiungibili tramite tastiera.
  5. Testare la salvaguardia "Reversibile": Completare un invio e poi tentare di annullarlo. Per l’e-commerce, cercare un link di cancellazione nell’email di conferma o nella pagina della cronologia ordini. Per l’eliminazione di dati, cercare un meccanismo di ripristino o un cestino. Valutare se la finestra di annullamento è comunicata chiaramente all’utente prima dell’invio, non solo dopo.
  6. Procedura con screen reader (VoiceOver + Safari su macOS/iOS): Navigare l’intero flusso di checkout o di invio utilizzando solo la tastiera e VoiceOver. Confermare che la schermata di revisione legga tutti i valori inseriti in un ordine logico, che i link di modifica siano annunciati con contesto sufficiente (ad esempio, "Modifica indirizzo di spedizione" e non solo "Modifica") e che lo scopo del pulsante di conferma finale sia inequivocabile.
  7. Verifica del carico cognitivo: Valutare se la fase di revisione è presentata in linguaggio semplice. Un riepilogo che elenca nomi di campi di database grezzi o utilizza gergo legale senza spiegazione può tecnicamente qualificarsi come schermata di revisione ma fallire in pratica per gli utenti con disabilità cognitive.

Come Correggere

Checkout a singolo passaggio senza revisione — Non corretto

<!-- Problematic: clicking "Complete Purchase" immediately charges the card -->
<form action='/checkout/complete' method='post'>
  <input type='hidden' name='cart_id' value='abc123'>
  <input type='hidden' name='payment_token' value='tok_xyz'>
  <button type='submit'>Complete Purchase</button>
</form>

Checkout a singolo passaggio con fase di revisione aggiunta — Corretto

<!-- Step 1: form collects data, submits to review page (not final) -->
<form action='/checkout/review' method='post'>
  <!-- payment and shipping fields -->
  <button type='submit'>Review Order</button>
</form>

<!-- Step 2: review page summarises all entered data and offers edit links -->
<section aria-labelledby='review-heading'>
  <h2 id='review-heading'>Review Your Order</h2>
  <dl>
    <dt>Delivery address</dt>
    <dd>Atatürk Cad. No:5, Kadıköy, Istanbul</dd>
    <dd><a href='/checkout/edit-address'>Edit delivery address</a></dd>
    <dt>Total</dt>
    <dd>₺1,249.00</dd>
  </dl>
  <form action='/checkout/complete' method='post'>
    <input type='hidden' name='order_token' value='tok_abc'>
    <!-- Final button is clearly labelled as the binding action -->
    <button type='submit'>Place Order and Pay ₺1,249.00</button>
  </form>
</section>

Eliminazione irreversibile di dati senza conferma — Non corretto

<!-- Problematic: delete button directly posts with no confirmation dialog -->
<form action='/account/delete-profile' method='post'>
  <button type='submit'>Delete My Account</button>
</form>

Eliminazione irreversibile di dati con finestra di conferma — Corretto

<!-- Trigger button opens a confirmation dialog, not the destructive action -->
<button type='button' aria-haspopup='dialog' aria-controls='confirm-delete-dialog'>
  Delete My Account
</button>

<dialog id='confirm-delete-dialog' aria-labelledby='dialog-title' aria-describedby='dialog-desc'>
  <h2 id='dialog-title'>Permanently Delete Account?</h2>
  <p id='dialog-desc'>
    This will permanently remove all your data. This action cannot be undone.
    Your subscription will be cancelled immediately.
  </p>
  <form action='/account/delete-profile' method='post'>
    <button type='submit'>Yes, permanently delete my account</button>
    <button type='button' onclick='this.closest("dialog").close()'>Cancel</button>
  </form>
</dialog>

Modulo finanziario senza validazione in linea — Non corretto

<!-- Problematic: no validation, wrong IBAN accepted silently -->
<form action='/transfer/submit' method='post'>
  <label for='iban'>Recipient IBAN</label>
  <input type='text' id='iban' name='iban'>
  <label for='amount'>Amount (TRY)</label>
  <input type='number' id='amount' name='amount'>
  <button type='submit'>Transfer</button>
</form>

Modulo finanziario con validazione e revisione — Corretto

<!-- Inline validation with aria-describedby for error association -->
<form action='/transfer/review' method='post' novalidate>
  <div>
    <label for='iban'>Recipient IBAN</label>
    <input
      type='text'
      id='iban'
      name='iban'
      aria-describedby='iban-hint iban-error'
      aria-required='true'
      autocomplete='off'
      pattern='[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}'
    >
    <p id='iban-hint'>Enter a valid TR IBAN starting with TR followed by 24 digits.</p>
    <p id='iban-error' role='alert' aria-live='assertive' hidden>
      Invalid IBAN format. Please check the number and try again.
    </p>
  </div>
  <!-- Submits to review page, not direct execution -->
  <button type='submit'>Review Transfer</button>
</form>

Errori Comuni

  • Usare un tooltip come meccanismo di "revisione": Mostrare i valori inseriti in un tooltip al passaggio del mouse prima del pulsante di invio non costituisce una fase di revisione, perché i tooltip non sono accessibili agli utenti che usano solo la tastiera o gli screen reader e scompaiono prima che l’utente possa agire.
  • Etichettare il pulsante finale come "Continua" invece di descrivere l’azione: Un pulsante con la scritta "Continua" su una pagina di revisione non chiarisce che facendo clic su di esso si completerà una transazione finanziaria. Il pulsante deve descrivere in modo inequivocabile l’azione vincolante, ad esempio "Effettua ordine e paga ₺850" o "Firma il contratto".
  • Fornire una politica di cancellazione solo nei termini di servizio: Nascondere il meccanismo di annullamento in un documento legale collegato che la maggior parte degli utenti non leggerà non soddisfa il requisito di reversibilità. La possibilità di cancellare e la finestra temporale in cui è disponibile devono essere comunicate all’interno del flusso di transazione stesso.
  • Usare window.confirm() come unico meccanismo di conferma: Le finestre di conferma native del browser sono scarsamente supportate da alcune tecnologie assistive, non possono essere stilizzate per migliorarne la leggibilità e sono bloccate in alcune configurazioni del browser. Non dovrebbero essere utilizzate come unica salvaguardia per invii ad alto rischio.
  • Reimpostare il modulo in caso di errore di validazione senza preservare i valori validi: Quando un modulo non supera la validazione, cancellare tutti i campi costringe gli utenti — in particolare quelli con disabilità motorie — a reinserire tutti i dati. Solo il campo non valido dovrebbe essere cancellato o evidenziato; tutte le voci valide devono essere preservate.
  • Posizionare il link "Modifica" sulla pagina di revisione senza associazione programmatica: Un link "Modifica" accanto a ciascun gruppo di dati deve avere un nome accessibile descrittivo (ad esempio, aria-label='Edit billing address'). Un semplice "Modifica" ripetuto più volte è ambiguo per gli utenti di screen reader che navigano per link.
  • Non annunciare la fase di revisione agli screen reader: Se la pagina di revisione viene caricata senza spostare il focus sull’intestazione o su un’area di riepilogo, gli utenti di screen reader potrebbero non rendersi conto di trovarsi su una pagina di revisione e potrebbero attivare il pulsante di invio senza leggere il riepilogo.
  • Considerare il criterio applicabile solo alle pagine di pagamento: L’ambito include qualsiasi impegno legale (attivazione di abbonamenti, moduli di consenso, accettazione di contratti) e qualsiasi modifica dei dati dell’utente (eliminazione di file, aggiornamento di cartelle cliniche, modifica delle impostazioni dell’account). Gli sviluppatori spesso trascurano i pannelli amministrativi e le pagine delle impostazioni.
  • Offrire la reversibilità solo tramite telefono o email: Se la cancellazione richiede di chiamare un servizio di assistenza, gli utenti con disabilità del linguaggio o dell’udito potrebbero non essere in grado di accedere al meccanismo di annullamento. Il percorso di reversibilità deve essere esso stesso accessibile — preferibilmente un flusso di cancellazione all’interno dell’applicazione.
  • Saltare il criterio per le web view mobili: Alcuni team implementano una fase di revisione su desktop ma utilizzano un flusso condensato a singolo passaggio su mobile per ridurre lo spazio sullo schermo. Il criterio si applica in egual misura a tutte le dimensioni di viewport e non deve essere omesso nelle implementazioni responsive o web mobili.

Relazione con le Normative di Accessibilità della Turchia

La Circolare Presidenziale 2025/10 della Turchia, pubblicata nella Gazzetta Ufficiale n. 32933 il 21 giugno 2025, stabilisce un quadro nazionale completo per l’accessibilità che fa riferimento a WCAG 2.2 come standard tecnico. La Circolare impone che i servizi digitali soddisfino almeno la conformità WCAG 2.2 di Livello AA, che include il criterio WCAG 3.3.4 Prevenzione degli errori (legali, finanziari, dati).

I soggetti esplicitamente coperti dalla Circolare comprendono un’ampia gamma di settori. Le istituzioni e agenzie pubbliche sono tenute a rendere accessibili tutti i servizi digitali rivolti ai cittadini, incluse le domande online, i portali di e-government e i servizi di identità digitale — tutti ambiti che spesso comportano impegni legali e modifiche dei dati. Le banche e istituzioni finanziarie regolamentate dalla BDDK (Banking Regulation and Supervision Agency) devono conformarsi, rendendo il criterio 3.3.4 direttamente rilevante per ogni operazione di banking online, trasferimento di fondi e richiesta di prestito che offrono. Gli ospedali e le strutture sanitarie che gestiscono portali digitali per i pazienti, sistemi di prenotazione di appuntamenti e cartelle cliniche elettroniche devono garantire che qualsiasi inserimento o modifica di dati in tali sistemi soddisfi gli standard di prevenzione degli errori. I fornitori di servizi di telecomunicazione con 200,000 o più abbonati — tra cui Turkcell, Vodafone TR e Türk Telekom — devono garantire che la gestione degli abbonamenti, le modifiche ai piani e i flussi di pagamento siano coperti. Anche le piattaforme di e-commerce, le agenzie di viaggio, le società di trasporto privato e le scuole private autorizzate dal Ministero dell’Istruzione Nazionale (MoNE) rientrano nell’ambito, coprendo una quota sostanziale dei servizi web transazionali ad alto volume nel mercato turco.

La conformità al criterio 3.3.4 non è semplicemente una casella tecnica da spuntare all’interno di questo quadro. Le organizzazioni che desiderano ottenere l’Erişilebilirlik Logosu (Logo di Accessibilità) rilasciato dal Ministero della Famiglia e dei Servizi Sociali devono dimostrare la piena conformità a WCAG 2.2 AA. Il logo funge da segnale di fiducia pubblica ed è sempre più atteso dai consumatori e dagli enti appaltanti. La mancata implementazione di misure di prevenzione degli errori nei flussi finanziari o legali può comportare sia il rifiuto del logo sia potenziali azioni amministrative ai sensi delle disposizioni di applicazione della Circolare.

Per le organizzazioni turche nei settori dell’e-commerce e del fintech in particolare, il criterio 3.3.4 è strettamente allineato con i requisiti esistenti di tutela dei consumatori previsti dalla legge turca. La Legge sulla tutela dei consumatori (n. 6502) e le relative normative sull’e-commerce richiedono già informazioni precontrattuali chiare e diritti di recesso per i contratti a distanza. Implementare una fase di revisione e conferma conforme a WCAG 3.3.4 soddisfa contemporaneamente sia il requisito di accessibilità sia l’obbligo di legge in materia di consumo di presentare i riepiloghi degli ordini prima di vincolare l’acquirente. Questa doppia conformità rende l’investimento in una UX di prevenzione degli errori adeguata un impegno ad alto valore e a bassa duplicazione per i fornitori di servizi digitali turchi.