<input type="hidden">

Gli elementi <input> di tipo hidden consentono agli sviluppatori web di includere dati che non possono essere visti o modificati dagli utenti quando viene inviato un modulo. Ad esempio, l'ID del contenuto attualmente ordinato o modificato o un token di sicurezza univoco. Gli input nascosti sono completamente invisibili nella pagina sottoposta a rendering e non c'è modo di renderli visibili nel contenuto della pagina.

Valore

L' attributo value dell'elemento <input> contiene una stringa che contiene i dati nascosti che desideri includere quando il modulo viene inviato al server. Questo in particolare non può essere modificato o visualizzato dall'utente tramite l'interfaccia utente, sebbene sia possibile modificare il valore tramite gli strumenti di sviluppo del browser.

Avvertimento: sebbene il valore non venga visualizzato all'utente nel contenuto della pagina, è visibile e può essere modificato utilizzando gli strumenti di sviluppo di qualsiasi browser o la funzionalità "Visualizza sorgente". Non fare affidamento sugli hiddeninput come forma di sicurezza.

Attributi aggiuntivi

Oltre agli attributi comuni a tutti gli elementi <input>, gli input hidden offrono i seguenti attributi.

name

Questo è in realtà uno degli attributi comuni, ma ha un significato speciale disponibile per gli input nascosti. Normalmente, l'attributo name funziona su input nascosti proprio come su qualsiasi altro input. Tuttavia, quando il modulo viene inviato, un input nascosto il cui valore name è impostato su _charset_verrà automaticamente riportato con il valore impostato sulla codifica dei caratteri utilizzata per inviare il modulo.

Utilizzo degli input hidden

Come accennato in precedenza, gli input nascosti possono essere utilizzati ovunque si desideri includere dati che l'utente non può visualizzare o modificare insieme al modulo quando viene inviato al server. Diamo un'occhiata ad alcuni esempi che ne illustrano l'uso.

Monitoraggio dei contenuti modificati

Uno degli usi più comuni degli input nascosti è tenere traccia di quale record del database deve essere aggiornato quando viene inviato un modulo di modifica. Un tipico flusso di lavoro è simile al seguente:

  1. L'utente decide di modificare alcuni contenuti su cui ha il controllo, come un post del blog o una voce di prodotto. Iniziano premendo il pulsante di modifica.
  2. Il contenuto da modificare viene prelevato dal database e caricato in un modulo HTML per consentire all'utente di apportare modifiche.
  3. Dopo la modifica, l'utente invia il modulo e i dati aggiornati vengono rispediti al server per essere aggiornati nel database.

L'idea qui è che durante il passaggio 2, l'ID del record da aggiornare viene mantenuto in un input nascosto. Quando il modulo viene inviato al passaggio 3, l'ID viene automaticamente rispedito al server con il contenuto del record. L'ID consente al componente lato server del sito di sapere esattamente quale record deve essere aggiornato con i dati inviati.

Miglioramento della sicurezza del sito web

Gli input nascosti vengono utilizzati anche per archiviare e inviare token di sicurezza o segreti , allo scopo di migliorare la sicurezza del sito Web. L'idea di base è che se un utente sta compilando un modulo sensibile, come un modulo sul proprio sito Web bancario per trasferire denaro su un altro conto, il segreto che gli verrebbe fornito dimostrerebbe che è chi dice di essere e che stanno utilizzando il modulo corretto per inviare la richiesta di trasferimento.

Ciò impedirebbe a un utente malintenzionato di creare un modulo falso, fingere di essere una banca e inviare il modulo tramite e-mail a utenti ignari per indurli a trasferire denaro nel posto sbagliato. Questo tipo di attacco è chiamato Cross Site Request Forgery (CSRF) ; praticamente qualsiasi framework lato server affidabile utilizza segreti nascosti per prevenire tali attacchi.

Nota: posizionare il segreto in un input nascosto non lo rende intrinsecamente sicuro. La composizione e la codifica della chiave lo farebbero. Il valore dell'input nascosto è che mantiene il segreto associato ai dati e lo include automaticamente quando il modulo viene inviato al server. Devi usare segreti ben progettati per proteggere effettivamente il tuo sito web.

Convalida

Gli input nascosti non partecipano alla convalida dei vincoli; non hanno alcun valore reale da vincolare.