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

Daten validieren

16. März 2016
  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:
  • Stromvergleich bei Spar-Lotse.de
  • Casinopilot24.com
  • Online casino echtgeld.com
  • Decasinos.de
  • Privatkredit247.com
  • Neueonline-Casinos.com

Hoster – Geringste Ausfallzeit

  1. webgo Ø 11 Min.
  2. Mittwald Ø 12 Min.
  3. Linevast Ø 18 Min.
  4. 1&1 Ø 29 Min.
  5. dogado Ø 30 Min.
  6. checkdomain Ø 30 Min.
  7. Alfahosting Ø 34 Min.
  8. Host Europe Ø 35 Min.
  9. ONE.com Ø 39 Min.
  10. All-Inkl.com Ø 42 Min.
» Mehr erfahren

Impressum | Datenschutz | Auf PHP-Einfach.de werben

© PHP-Einfach.de 2003 - 2019

Um dich beim Lernen von PHP und MySQL zu unterstützen verwenden wir Cookies. OK Weitere Infos