So entwerfen Sie sichere Webformulare: Überprüfen, bereinigen und steuern

Während Cybersicherheit häufig in Bezug auf Datenbanken und Architektur betrachtet wird, beruht ein Großteil einer starken Sicherheitslage auf Elementen im Bereich des Front-End-Entwicklers.

Für bestimmte potenziell verheerende Sicherheitslücken wie SQL Injection und Cross-Site Scripting (XSS) ist eine gut durchdachte Benutzeroberfläche die erste Verteidigungslinie.

Hier sind einige Schwerpunkte für Front-End-Entwickler, die beim Kampf gegen den guten Kampf helfen möchten.

Benutzereingabe steuern

Eine ganze Reihe verrückter Dinge kann passieren, wenn Entwickler ein Formular erstellen, das die Benutzereingaben nicht steuert. Um Schwachstellen wie Injektionen zu bekämpfen, ist es wichtig, Benutzereingaben zu validieren oder zu bereinigen.

Sie können Eingaben validieren, indem Sie sie auf bekannte Werte beschränken, z. B. indem Sie semantische Eingabetypen oder validierungsbezogene Attribute in Formularen verwenden. Frameworks wie Django helfen auch, indem sie Feldtypen für diesen Zweck bereitstellen. Das Bereinigen von Daten kann durch Entfernen oder Ersetzen von kontextgefährdenden Zeichen erfolgen, z. B. durch Verwenden einer Whitelist oder durch Escapezeichen der Eingabedaten.

Obwohl dies möglicherweise nicht intuitiv ist, sollten selbst Daten, die ein Benutzer an einen eigenen Bereich auf einer Site übermittelt, validiert werden. Einer der am schnellsten zu vermehrenden Viren war der Samy-Wurm auf MySpace (ja, ich bin alt), dank des Codes, den Samy Kamkar in seine eigene Profilseite einfügen konnte. Geben Sie keine Eingaben ohne gründliche Validierung oder Bereinigung direkt an Ihre Site zurück.

Weitere Hinweise zur Bekämpfung von Injektionsangriffen finden Sie im OWASP Injection Prevention Cheat Sheet.

Vorsicht vor versteckten Feldern

Das Hinzufügen type="hidden"ist eine verlockend bequeme Möglichkeit, vertrauliche Daten in Seiten und Formularen zu verbergen, aber leider keine effektive.

Mit Tools wie ZapProxy und sogar Inspektionstools in einfachen alten Webbrowsern können Benutzer einfach klicken, um leckere unsichtbare Informationen anzuzeigen.

Das Ausblenden von Kontrollkästchen kann ein guter Hack sein, um nur CSS-Switches zu erstellen, aber versteckte Felder tragen wenig zur Sicherheit bei.

Felder sorgfältig ausfüllen

Wenn ein Benutzer Ihnen seine personenbezogenen Daten (PII) zur Verfügung stellt, sollte dies eine bewusste Entscheidung sein. Das automatische Ausfüllen von Formularfeldern kann praktisch sein - sowohl für Benutzer als auch für Angreifer. Exploits mit versteckten Feldern können PII sammeln, die zuvor von einem Feld für die automatische Vervollständigung erfasst wurden.

Vielen Benutzern ist nicht einmal bekannt, welche Informationen beim automatischen Ausfüllen ihres Browsers gespeichert wurden. Verwenden Sie diese Felder sparsam und deaktivieren Sie automatisch ausgefüllte Formulare für besonders vertrauliche Daten.

Es ist wichtig, auch Ihr Risikoprofil gegen die Kompromisse abzuwägen. Wenn Ihr Projekt WCAG-kompatibel sein muss, kann das Deaktivieren der automatischen Vervollständigung Ihre Eingabe für verschiedene Modalitäten unterbrechen. Weitere Informationen finden Sie unter 1.3.5: Identifizieren des Eingabezwecks in WCAG 2.1.

Halten Sie Fehler generisch

Es mag hilfreich erscheinen, Benutzer wissen zu lassen, ob Daten vorhanden sind, aber es ist auch für Angreifer sehr hilfreich. Beim Umgang mit Konten, E-Mails und PII ist es am sichersten, auf der Seite von weniger zu irren (?). Anstatt "Ihr Passwort für dieses Konto ist falsch" zurückzugeben, versuchen Sie es mit dem mehrdeutigen Feedback "Falsche Anmeldeinformationen" und geben Sie nicht an, ob sich der Benutzername oder die E-Mail-Adresse im System befindet.

Um hilfreicher zu sein, bieten Sie eine hervorragende Möglichkeit, einen Menschen zu kontaktieren, falls ein Fehler auftreten sollte. Vermeiden Sie es, Informationen preiszugeben, die nicht erforderlich sind. Wenn nichts anderes, um Himmels willen, schlagen Sie keine Daten vor, die der Benutzereingabe sehr nahe kommen.

Sei ein Bösewicht

Wenn Sie über Sicherheit nachdenken, ist es hilfreich, einen Schritt zurückzutreten, die angezeigten Informationen zu beachten und sich zu fragen, wie ein böswilliger Angreifer sie nutzen könnte. Spielen Sie den Anwalt des Teufels. Wenn ein Bösewicht diese Seite sehen würde, welche neuen Informationen würden sie erhalten? Zeigt die Ansicht PII an?

Fragen Sie sich, ob für einen echten Benutzer tatsächlich alles auf der Seite erforderlich ist. Wenn nicht, redigieren oder entfernen Sie es. Weniger ist sicherer.

Sicherheit beginnt an der Haustür

Heutzutage gibt es viel mehr Überschneidungen zwischen der Codierung am vorderen und hinteren Ende. Um eine abgerundete und sichere Anwendung zu erstellen, ist es hilfreich, ein allgemeines Verständnis dafür zu haben, wie Angreifer ihren Fuß in die Haustür bekommen können.