Generiert ein Textfeld mit maskierter Eingabe, dessen Inhalt gehasht wird und dessen Usprungswert somit nicht wiederherstellbar ist.
Dieses Feld eignet sich zur Eingabe von Kennwörtern, die nicht in Klartext in der Datenbank gespeichert werden sollen. Sie benutzen einen Hashing-Algorythmus, welcher das ursprüngliche Kennwort in einen Hashtext überführen, aus dem sich das ursprüngliche Kennwort - ohne aufwendige Dechiffrierungstechniken - nicht wieder herleiten lässt.
Da der Hashing-Algorythmus jedoch aus demselben Passwort immer denselben Hash-Wert generiert, kann dieser trotzdem verwendet werden um Neueingaben des Kennwortes mit dem ursprünglich eingegebenen Kennwort zu vergleichen. Dazu wird die Neueingabe mit demselben Algorythmus verschlüsselt. Stimmt der daraus resultierende Hashwert mit jenem des ursprünglichen Kennwortes überein, so waren auch die beiden Kennworte im Klartext gleich.
Felder dieses Typs haben ein paar Besonderheiten bezüglich Validierungsformeln:
- Existiert eine Validierungsformel für das Eingabefeld, so wird diese nur ausgeführt wenn das Kennwort wirklich vom Benutzer geändert wurde. Nur dann enthält der "entered value", erreichbar über Variable $E_VALUE oder per TMLScript "tmlform.enteredValue()" bei diesen Eingabefeldern das Klartextkennwort. Hier sind dann Validierungen wie z.B. die Prüfung einer Mindestlänge möglich.
- In allen anderen Situationen enthält der "entered value" den Hashwert des Kennwortes
- Der "parsed value", erreichbar über Variable $P_VALUE oder TMLScript "tmlform.parsedValues()" enthält immer den Hashwert des Kennwortes.
Ein Eingabeformular um ein Kennwort festzulegen. Über eine Validierung wird getestet, ob die beiden eingegebenen Kennwörter gleich sind. Dazu wird der "entered Value" ausgelesen:
<tml:form id="setPassword" source="profile">
Password: <tml:input type="hashedpassword" name="pwd"/>
Password Confirmation: <tml:input type="hashedpassword" name="pwdConfirm"/>
<tml:validate condition="tmlform.enteredValue('pwd') == tmlform.enteredValue('pwdConfirm')">
The passwords did not match!
</tml:validate>
<tml:button clickaction="$store">Save</tml:button>
</tml:form>
Ein Anmeldeformular, in welchem das eingegebene Kennwort gegen ein gespeichertes verglichen wird. Dazu wird die Aktion "login" verwendet:
<tml:action id="login">
if (tmlform.parsedValue("pwd") == profile.pwd) {
setSessionVar("loggedin", true);
}
</tml:action>
<tml:form id="login" source="none">
Password: <tml:input type="hashedpassword" name="pwd"/>
<tml:button clickaction="login">Login</tml:button>
</tml:form>