<input type="hidden"> HTML-Attributwert
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
<input>-Elemente vom Typ hidden ermöglichen es Webentwicklern, Daten einzuschließen, die nicht von Benutzern gesehen oder geändert werden können, wenn ein Formular übermittelt wird. Zum Beispiel die ID des Inhalts, der gerade bestellt oder bearbeitet wird, oder ein eindeutiges Sicherheitstoken. Verborgene Eingaben sind vollständig unsichtbar auf der gerenderten Seite, und es gibt keine Möglichkeit, sie im Inhalt der Seite sichtbar zu machen.
Wert
Das Attribut value des <input>-Elements enthält eine Zeichenkette, die die versteckten Daten enthält, die Sie beim Absenden des Formulars an den Server übermitteln möchten. Diese können vom Benutzer über die Benutzeroberfläche nicht bearbeitet oder gesehen werden, obwohl Sie den Wert über die Entwicklertools des Browsers bearbeiten könnten.
Warnung:
Obwohl der Wert dem Benutzer nicht im Seiteninhalt angezeigt wird, ist er sichtbar und kann mit den Entwicklertools oder der "Seitenquelltext anzeigen"-Funktion jedes Browsers bearbeitet werden. Verlassen Sie sich nicht auf hidden-Eingaben als eine Form der Sicherheit.
Zusätzliche Attribute
Zusätzlich zu den Attributen, die allen <input>-Elementen gemein sind, bieten hidden-Eingaben die folgenden Attribute.
name
Dies ist tatsächlich eines der allgemeinen Attribute, aber es hat eine besondere Bedeutung für versteckte Eingaben. Normalerweise funktioniert das name-Attribut bei versteckten Eingaben genauso wie bei jeder anderen Eingabe. Wenn jedoch das Formular übermittelt wird, wird eine verborgene Eingabe, deren name auf _charset_ gesetzt ist, automatisch mit dem Wert des Zeichencodierungsschemas übermittelt, das zur Übermittlung des Formulars verwendet wurde.
Verwendung versteckter Eingaben
Wie oben erwähnt, können versteckte Eingaben überall dort verwendet werden, wo Sie Daten einschließen möchten, die der Benutzer nicht sehen oder bearbeiten kann, wenn das Formular an den Server übermittelt wird. Sehen wir uns einige Beispiele an, die die Verwendung veranschaulichen.
Nachverfolgung bearbeiteter Inhalte
Eine der häufigsten Verwendungen für versteckte Eingaben besteht darin, nachzuverfolgen, welcher Datenbankeintrag aktualisiert werden muss, wenn ein Bearbeitungsformular übermittelt wird. Ein typischer Ablauf sieht so aus:
- Der Benutzer entscheidet sich, Inhalte zu bearbeiten, über die er Kontrolle hat, wie z.B. einen Blogbeitrag oder einen Produkteintrag. Er beginnt, indem er den Bearbeitungsknopf drückt.
- Der zu bearbeitende Inhalt wird aus der Datenbank entnommen und in ein HTML-Formular geladen, damit der Benutzer Änderungen vornehmen kann.
- Nach der Bearbeitung übermittelt der Benutzer das Formular und die aktualisierten Daten werden zurück an den Server gesendet, um in der Datenbank aktualisiert zu werden.
Die Idee hier ist, dass während Schritt 2 die ID des aktualisierten Eintrags in einer verborgenen Eingabe gespeichert wird. Wenn das Formular in Schritt 3 übermittelt wird, wird die ID automatisch mit dem Inhalte des Eintrags an den Server gesendet. Die ID ermöglicht es der serverseitigen Komponente der Seite genau zu wissen, welcher Eintrag mit den übermittelten Daten aktualisiert werden muss.
Ein vollständiges Beispiel, wie dies aussehen könnte, finden Sie im Abschnitt Beispiele weiter unten.
Verbesserung der Sicherheit von Websites
Verdeckte Eingaben werden auch verwendet, um Sicherheitstoken oder Secrets zu speichern und zu übermitteln, um die Sicherheit von Websites zu verbessern. Die Grundidee ist, dass, wenn ein Benutzer ein empfindliches Formular ausfüllt, wie z.B. ein Formular auf seiner Bankwebsite, um Geld auf ein anderes Konto zu überweisen, das Secret, mit dem er arbeiten würde, beweisen würde, dass er derjenige ist, für den er sich ausgibt, und dass er das richtige Formular benutzt, um die Überweisungsanfrage zu übermitteln.
Dies würde einen bösartigen Benutzer davon abhalten, ein gefälschtes Formular zu erstellen, das vorgibt, eine Bank zu sein, und das Formular an nichtsahnende Benutzer zu senden, um sie zu überlisten, Geld an die falsche Stelle zu überweisen. Diese Art von Angriff wird als Cross Site Request Forgery (CSRF) bezeichnet; fast jedes seriöse serverseitige Framework verwendet verborgene Secrets, um solche Angriffe zu verhindern.
Hinweis: Das Platzieren des Secrets in einer versteckten Eingabe macht es an sich nicht sicher. Die Zusammensetzung und Kodierung des Schlüssels würde dies tun. Der Wert der versteckten Eingabe besteht darin, das Secret mit den Daten zu verknüpfen und es automatisch einzuschließen, wenn das Formular an den Server gesendet wird. Sie müssen gut gestaltete Secrets verwenden, um Ihre Website wirklich zu sichern.
Validierung
Versteckte Eingaben nehmen nicht an der Einschränkungsvalidierung teil; sie haben keinen echten Wert, der eingeschränkt werden könnte.
Beispiele
Sehen wir uns an, wie wir eine Version des Bearbeitungsformulars implementieren könnten, das wir zuvor beschrieben haben (siehe Nachverfolgung bearbeiteter Inhalte), indem wir eine versteckte Eingabe verwenden, um die ID des bearbeiteten Eintrags zu speichern.
Das HTML des Bearbeitungsformulars könnte in etwa so aussehen:
<form>
<div>
<label for="title">Post title:</label>
<input type="text" id="title" name="title" value="My excellent blog post" />
</div>
<div>
<label for="content">Post content:</label>
<textarea id="content" name="content" cols="60" rows="5">
This is the content of my excellent blog post. I hope you enjoy it!
</textarea>
</div>
<div>
<button type="submit">Update post</button>
</div>
<input type="hidden" id="postId" name="postId" value="34657" />
</form>
Lassen Sie uns auch etwas CSS hinzufügen:
html {
font-family: sans-serif;
}
form {
width: 500px;
}
div {
display: flex;
margin-bottom: 10px;
}
label {
flex: 2;
line-height: 2;
text-align: right;
padding-right: 20px;
}
input,
textarea {
flex: 7;
font-family: sans-serif;
font-size: 1.1rem;
padding: 5px;
}
textarea {
height: 60px;
}
Der Server würde den Wert der versteckten Eingabe mit der ID postID auf die ID des Beitrags in seiner Datenbank setzen, bevor er das Formular an den Browser des Benutzers sendet, und diese Information verwenden, wenn das Formular zurückgesendet wird, um zu wissen, welcher Datenbankeintrag mit modifizierten Informationen aktualisiert werden muss. Kein Skripting ist erforderlich, um dies im Inhalt zu handhaben.
Die Ausgabe sieht so aus:
Hinweis: Sie können das Beispiel auch auf GitHub finden (siehe den Quellcode und führen Sie es auch direkt aus).
Beim Absenden sieht die an den Server gesendete Formulardaten in etwa so aus:
title=My+excellent+blog+post&content=This+is+the+content+of+my+excellent+blog+post.+I+hope+you+enjoy+it!&postId=34657
Obwohl die versteckte Eingabe überhaupt nicht zu sehen ist, werden ihre Daten dennoch übermittelt.
Technische Zusammenfassung
| Wert | Eine Zeichenkette, die den Wert der versteckten Daten darstellt, die Sie zurück an den Server übermitteln möchten. |
| Ereignisse | Keine. |
| Unterstützte allgemeine Attribute | autocomplete |
| IDL-Attribute | value |
| DOM-Schnittstelle | [`HTMLInputElement`](/de/docs/Web/API/HTMLInputElement) |
| Implizierte ARIA-Rolle | keine entsprechende Rolle |
Spezifikationen
| Spezifikation |
|---|
| HTML> # hidden-state-(type=hidden)> |
Browser-Kompatibilität
Siehe auch
- HTML-Formulare Leitfaden
<input>und dieHTMLInputElement-Schnittstelle, auf der es basiert