PHP-Einfach.de
  • PHP Tutorial
  • MySQL Tutorial
  • Für Fortgeschrittene
  • Webhosting
  • Forum

Daten validieren

10. Februar 2020
  1. Home
  2. »
  3. Für Fortgeschrittene
  4. »
  5. PHP Sicherheit
  6. »
  7. Daten validieren

Unter der Validation von Daten versteht man, dass überprüft wird, dass die vom Benutzer übergebenen Daten auch dem erwartetem Format entsprechend. Übergebt ihr als GET-Parameter beispielsweise die ID zu einem Artikel in eurem Onlineshop, so solltet ihr überprüfen dass diese übergebene Wert auch tatsächlich eine Zahl ist. Durch eine gute Datenvalidierung könnt ihr euren Schutz gegen SQL-Injections und Cross-Site-Scripting deutlich erhöhen.

Neben der Erhöhung der Sicherheit bekommt ihr durch eine gute Validierung der Eingabedaten auch eine gesteigerte Nutzererfahrung, da Falscheingaben so frühzeitig abgefangen werden.

Prinzipiell solltet ihr alle Eingaben eurer Benutzer überprüfen und durch geeignete Hinweise auf Falscheingaben hinweisen. Ein Vertipper bei der E-Mail-Adresse passiert schnell und kann ärgerlich sein, wenn dieses nicht auffällt.

Inhaltsverzeichnis

  • 1 Wie und wo sollte die Validierung stattfinden?
  • 2 Gängige Validierung in PHP
  • 3 Fortgeschrittene Validierung mittels RegEx

Wie und wo sollte die Validierung stattfinden?

Viele Programmierer machen den Fehler, die Datenvalidierung nur im Frontend zu implementieren beispielsweise wird mittels JavaScript die Eingaben in einem Formular überprüft. Sollte der Benutzer eine falsche Eingabe machen so erscheint eine Warnung mit einem Hilfetext, welches Format erwartet wird, z.B. dass in dem Feld nur eine Zahl erlaubt ist. Aus Sicht der Benutzerfreundlichkeit ist dies super, aus der Sicherheitsperspektive bringt dies aber herzlich wenig. Ein Angreifer könnte einfach eure JavaScript-Validierung deaktivieren und schon beliebige, möglicherweise boshafte Eingaben tätigen.

Deswegen sollte eure Datenvalidierung stets in PHP stattfinden, bevor ihr diese Daten an eure Datenbank sendet. Ebenfalls sollte eure Datenbankspalten den entsprechend passenden Typen besitzen. Benötigt ihr in einer Spalte nur Zahlen, so solltet ihr diese Spalte als int definieren.

Gängige Validierung in PHP

Nachdem ihr die Benutzerdaten abfragt, sollte direkt die Überprüfung dieser Daten stattfinden. So minimiert ihr das Risiko, dass böshafte Eingaben Schaden anrichten können.

Überprüfung auf Integer

Die gängigste Überprüfung ist das Testen ob ihr eine ID erhalten habt. Mittels is_numeric($eingabe) könnt ihr überprüfen ob die Eingabe numerisch ist. Mittels der Funktion intval($eingabe) könnt ihr eine Eingabe in einen Integer umwandeln.

1
2
3
4
5
<?php
if(!isset($_GET['id']) || !is_numeric($_GET['id'])) {
   die("Bitte eine ID spezifizieren");
}
$id = intval($_GET['id']);

Überprüfung das ein Feld ausgefüllt wurde

Zum Überprüfen dass eine Eingabe nicht leer war könnt ihr die Funktion empty($eingabe) nutzen:

1
2
3
4
5
6
<?php
$username = isset($_POST['username']) ? $_POST['username'] : "";
 
if(empty(trim($username)) {
  die("Dein Benutzername darf nicht leer sein");
}

Überprüfung auf die Gültigkeit der E-Mail-Adresse

Die Gültigkeit einer E-Mail-Adresse lässt sich wie folgt überprüfen:

1
2
3
4
5
6
<?php
$email = isset($_POST['email']) ? $_POST['email'] : "";
 
if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
    die("Die Email-Adresse war ungültig");
}

Überprüfung auf die Gültigkeit einer URL

Ähnlich lässt sich auch überprüfen ob eine Eingabe eine valide URL ist:

1
2
3
4
5
6
<?php
$url= isset($_POST['url']) ? $_POST['url'] : "";
 
if (empty($url) || !filter_var($url, FILTER_VALIDATE_URL)) {
    die("Die URL war ungültig");
}

Überprüfung der Länge der Eingabe

Mittels strlen($eingabe) lässt sich die Länge der Eingabe überprüfen:

1
2
3
4
5
6
<?php
$passwort = isset($_POST['passwort']) ? $_POST['passwort'] : "";
 
if(strlen($passwort) < 8) {
  die("Dein Passwort muss mindestens 8 Zeichen haben");
}

 

Fortgeschrittene Validierung mittels RegEx

Manchmal sind kompliziertere Regeln notwendig, beispielsweise erwartet ihr ein gewisses Format, oder es sind nur gewisse Buchstaben erlaubt in eurer Eingabe. In diesen Fällen kann man auf Reguläre Ausdrücke zurückgreifen.

Autor: Nils Reimers
Zurück: Passwörter sicher speichern
Weiter: Penetrationtesting für PHP

Für Fortgeschrittene

  • Objektorientierte Programmierung
  • PHP Sicherheit
    • Authentifizierung in PHP
    • Code Injection
    • Cross-Site-Request-Forgery (CSRF)
    • Cross-Site-Scripting (XSS) in PHP
    • Daten sicher speichern
    • Daten validieren
    • Penetrationtesting für PHP
    • SQL-Injections
  • Script-Beispiele
  • Codeschnipsel
  • Stellenmarkt
Mit freundlicher Unterstützung von:
  • Punkt191 Werbeagentur
  • CasinoAndy Finland
  • Casinoohnelizenz.info
  • Cryptocasinomaster.com
  • CasinoHEX.at
  • inkedin.com

Hoster – Geringste Ausfallzeit

  1. webgo Ø 1 Min.
  2. Linevast Ø 2 Min.
  3. netcup Ø 3 Min.
  4. All-Inkl.com Ø 6 Min.
  5. checkdomain Ø 8 Min.
  6. dogado Ø 17 Min.
  7. bplaced Ø 17 Min.
  8. Contabo Ø 25 Min.
  9. Hetzner Ø 49 Min.
  10. ONE.com Ø 62 Min.
» Mehr erfahren

Impressum | Datenschutz | Auf PHP-Einfach.de werben

© PHP-Einfach.de 2003 - 2023

Cookie-Zustimmung verwalten
Um dir ein optimales Erlebnis zu bieten, verwenden wir Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wenn du diesen Technologien zustimmst, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn du deine Zustimmung nicht erteilst oder zurückziehst, können bestimmte Merkmale und Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Anbieter verwalten Lese mehr über diese Zwecke
Einstellungen ansehen
{title} {title} {title}