Hier erfährst du, wie du dein OTP-Formular für SMS optimieren und die Nutzerfreundlichkeit verbessern kannst.
Häufig werden Nutzer dazu aufgefordert, das per SMS erhaltene OTP (Einmalpasswort) anzugeben. um die Telefonnummer eines Nutzers zu bestätigen. Es gibt einige Anwendungsfälle für SMS-OTP:
- Bestätigung in zwei Schritten: Neben Nutzername und Passwort kann das SMS-OTP auch Dies ist ein deutlicher Hinweis darauf, dass das Konto der Person gehört, die den SMS-OTP.
- Bestätigung der Telefonnummer: Einige Dienste verwenden eine Telefonnummer als primäre Kennung. In solchen Diensten können Nutzer ihre Telefonnummer und die OTP wurde per SMS zur Bestätigung der Identität empfangen. Manchmal wird es mit einer PIN kombiniert eine 2-Faktor-Authentifizierung.
- Kontowiederherstellung: Wenn ein Nutzer keinen Zugriff mehr auf sein Konto hat, um es wiederherzustellen. Sie senden eine E-Mail an ihre registrierte E-Mail-Adresse oder eine SMS-OTP an ihre Telefonnummer sind gängige Methoden zur Kontowiederherstellung.
- Zahlungsbestätigung In Zahlungssystemen verwenden einige Banken oder Kreditkarten Aus Sicherheitsgründen fordern Aussteller eine zusätzliche Authentifizierung vom Zahlungspflichtigen an. Zu diesem Zweck wird in der Regel ein SMS-OTP verwendet.
In diesem Beitrag werden Best Practices zum Erstellen eines OTP-Formulars für SMS erläutert. Cases.
Checkliste
So können Sie das OTP per SMS optimal nutzen:
- Verwenden Sie das Element
<input>
mit: <ph type="x-smartling-placeholder">- </ph>
type="text"
inputmode="numeric"
autocomplete="one-time-code"
- Verwende „
@BOUND_DOMAIN #OTP_CODE
“ als letzte Zeile der OTP-SMS. - Verwenden Sie die WebOTP API.
<input>
-Element verwenden
Die Verwendung eines Formulars mit einem <input>
-Element ist die wichtigste Best Practice,
da es in allen Browsern funktioniert. Auch wenn andere Vorschläge von
Dieser Beitrag funktioniert in manchen Browsern nicht. Der Nutzer kann das OTP trotzdem eingeben und senden.
manuell.
<form action="/verify-otp" method="POST">
<input type="text"
inputmode="numeric"
autocomplete="one-time-code"
pattern="\d{6}"
required>
</form>
Im Folgenden finden Sie einige Ideen, wie Sie sicherstellen können, dass ein Eingabefeld das Beste aus Browserfunktionen.
type="text"
Da OTPs in der Regel fünf- oder sechsstellig sind, sollten Sie
type="number"
für ein Eingabefeld mag intuitiv erscheinen, weil es den mobilen
nur Zahlen anzeigen. Dies wird nicht empfohlen, da der Browser eine
in eine zählbare Zahl und nicht
eine Folge mehrerer Zahlen ein,
was zu unerwartetem Verhalten führen kann. Die Verwendung von type="number"
führt zu einer Aufwärts- und Abwärtsursache.
die neben dem Eingabefeld angezeigt werden. durch Drücken dieser Tasten
erhöht oder verringert die Zahl und entfernt eventuell vorangehende Nullen.
Verwenden Sie stattdessen type="text"
. Die Mobiltastatur wird dadurch nicht in Zahlen umgewandelt
Das ist aber in Ordnung, denn der nächste Tipp zur Verwendung von inputmode="numeric"
für diesen Job.
inputmode="numeric"
inputmode="numeric"
verwenden
, um die Handytastatur auf Zahlen zu stellen.
Einige Websites verwenden type="tel"
als OTP-Eingabefelder,
Die Handytastatur wird nur auf Zahlen (einschließlich *
und #
) eingestellt, wenn
fokussiert sind. Dieser Hack wurde in der Vergangenheit verwendet, als inputmode="numeric"
nicht weithin unterstützt. Seit Firefox
inputmode="numeric"
,
ist es nicht notwendig, den semantisch falschen type="tel"
-Hack zu verwenden.
autocomplete="one-time-code"
autocomplete
können Entwickler angeben, welche Berechtigung der Browser
Unterstützung bei der automatischen Vervollständigung bieten und den Browser darüber informieren,
Art der Informationen, die im Feld erwartet werden.
Mit autocomplete="one-time-code"
wird jedes Mal, wenn ein Nutzer eine SMS erhält, während ein
Formular geöffnet ist, parst das Betriebssystem das OTP in der SMS heuristisch und
schlägt die Tastatur dem Nutzer das OTP vor. Es funktioniert nur mit Safari 12 und
später unter iOS, iPadOS und macOS. Wir empfehlen jedoch dringend, es zu verwenden, da es sich um eine
eine einfache Möglichkeit, das OTP für SMS auf diesen Plattformen zu verbessern.
Mit autocomplete="one-time-code"
wird die Nutzererfahrung verbessert, aber es gibt noch mehr zu entdecken
indem Sie sicherstellen, dass die SMS der ursprungsgebundenen Nachricht entspricht
.
SMS-Text formatieren
Die Eingabe eines OTP ist nutzerfreundlicher, über SMS versendete ursprungsgebundene Einmalcodes Spezifikation zu ändern.
Die Formatierungsregel ist einfach: Die SMS mit der Domain des Empfängers fertigstellen.
mit vorangestelltem @
und dem OTP mit vorangestelltem #
.
Beispiel:
Your OTP is 123456
@web-otp.glitch.me #123456
Die Verwendung eines Standardformats für OTP-Nachrichten führt zu einer Extraktion einfacher und zuverlässiger. OTP-Codes werden verknüpft mit Websites erschweren es, Nutzer durch Täuschung dazu zu verleiten, auf schädlichen Websites Code bereitzustellen.
Dieses Format bietet einige Vorteile:
- Das OTP ist an die Domain gebunden. Nutzer in anderen Domains als das in der SMS-Nachricht angegeben ist, wird der OTP-Vorschlag nicht angezeigt. So verringern Sie auch das Risiko von Phishing-Angriffen und Kontodiebstahl.
- Der Browser kann das OTP jetzt zuverlässig extrahieren, geheimnisvoller und instabiler Heuristiken.
Wenn auf einer Website autocomplete="one-time-code"
oder Safari mit iOS 14 oder höher verwendet wird
schlägt das OTP gemäß den oben genannten Regeln vor.
Dieses SMS-Format kommt auch anderen Browsern als Safari zugute. Chrome, Opera
und Vivaldi für Android auch die Regel für ursprungsgebundene Einmalcodes mit
die WebOTP API, allerdings nicht über autocomplete="one-time-code"
.
WebOTP API verwenden
Die WebOTP API bietet Zugriff auf das OTP.
per SMS erhalten. Durch den Anruf
navigator.credentials.get()
mit dem Typ otp
(OTPCredential
), wobei transport
die Website sms
enthält
wartet auf eine SMS, die den ursprungsgebundenen Einmalcodes entspricht,
die der Nutzer erhält
und ihm Zugriff gewährt. Sobald das OTP an JavaScript übergeben wurde,
kann die Website sie in einem Formular verwenden oder sie direkt per POST an den Server senden.
navigator.credentials.get({
otp: {transport:['sms']}
})
.then(otp => input.value = otp.code);
<ph type="x-smartling-placeholder">Detaillierte Informationen zur Verwendung der WebOTP API finden Sie unter Telefonnummern im Web überprüfen
mit der WebOTP API oder kopieren Sie das folgende Snippet und fügen Sie es ein. (Machen Sie
Achten Sie darauf, dass für das <form>
-Element die Attribute action
und method
korrekt festgelegt sind.)
// Feature detection
if ('OTPCredential' in window) {
window.addEventListener('DOMContentLoaded', e => {
const input = document.querySelector('input[autocomplete="one-time-code"]');
if (!input) return;
// Cancel the WebOTP API if the form is submitted manually.
const ac = new AbortController();
const form = input.closest('form');
if (form) {
form.addEventListener('submit', e => {
// Cancel the WebOTP API.
ac.abort();
});
}
// Invoke the WebOTP API
navigator.credentials.get({
otp: { transport:['sms'] },
signal: ac.signal
}).then(otp => {
input.value = otp.code;
// Automatically submit the form when an OTP is obtained.
if (form) form.submit();
}).catch(err => {
console.log(err);
});
});
}
Foto von Jason Leung auf Unsplash (Unsplash).