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
  • DGUV V3
  • DGUV 3
  • CasinoAndy Finland
  • Casinopilot24.com
  • Neueonline-Casinos.com
  • Decasinos.de
  • Privatkredit247.com
  • CasinoHEX.at
  • Online Casino Spielautomaten
  • Casinofrog.com
  • parhaatuudetkasinot.com
  • Mr Bet Casino Spiele

Hoster – Geringste Ausfallzeit

  1. webgo Ø 0 Min.
  2. Linevast Ø 2 Min.
  3. netcup Ø 2 Min.
  4. Mittwald Ø 5 Min.
  5. dogado Ø 6 Min.
  6. checkdomain Ø 8 Min.
  7. All-Inkl.com Ø 9 Min.
  8. manitu Ø 10 Min.
  9. bplaced Ø 11 Min.
  10. Host Europe Ø 15 Min.
» Mehr erfahren

Impressum | Datenschutz | Auf PHP-Einfach.de werben

© PHP-Einfach.de 2003 - 2022

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

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Notwendige
immer aktiv

Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.

Nicht notwendige

Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.