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

PHP Sicherheit

10. Februar 2020
  1. Home
  2. »
  3. Für Fortgeschrittene
  4. »
  5. PHP Sicherheit
Buchtipp: Pro PHP Security
Buchtipp:
Pro PHP Security

In unserer Artikelserie PHP Sicherheit geht es um die sichere Entwicklung von Web­anwendungen in PHP. Wir werden dabei auf die wichtigsten Aspekte eingehen, so dass kein Angreifer euer System hacken kann. Als gutes Buch für den Einstieg ist Pro PHP Security zu empfehlen.

Diese Artikel richten sich an Software-Entwickler, nicht an IT Administratoren. Die sichere Installation und der sichere Betrieb eines Webservers ist eine Wissenschaft für sich, die wir hier leider nicht abdecken können. Hierfür können wir euch Linux-Server: Das umfassende Handbuch als Wissensquelle empfehlen.

Damit ihr sichere Webanwendungen entwickeln könnt, solltet ihr die folgenden Gefahren und Konzepte verstehen.

Inhaltsverzeichnis

  • 1 Typische Angriffe auf Webanwendungen
    • 1.1 Sensible Daten sicher abspeichern
    • 1.2 SQL-Injections
    • 1.3 Code-Injections
    • 1.4 Cross Site Scripting (XSS)
    • 1.5 Cross-Site-Request-Forgery (CSRF)
    • 1.6 Authentifizierung und Autorisierung
    • 1.7 Daten validieren
  • 2 Sichere Webanwendungen entwickeln
    • 2.1 Penetrationtesting für PHP
    • 2.2 Das sichere Backup

Typische Angriffe auf Webanwendungen

Im folgenden findet ihr die typischen Angriffe auf Webanwendung. Ihr als Webentwickler solltet unbedingt die wichtigsten Angriffsmethoden kennen um eure Webanwendung davor entsprechend schützen zu können.

Sensible Daten sicher abspeichern

Jeder Server kann gehackt werden und manchmal passiert dies schneller als einem lieb ist. Um den Schaden zu minimieren, sollten sensible Daten wie beispielsweise Passwörter oder Kreditkarteninformationen entsprechend geschützt abgespeichert werden. In diesem Artikel lernt ihr die Grundlagen zur sicheren Abspeicherung sensibler Daten.

SQL-Injections

SQL-Injections bezeichnet das Ausnutzen von Sicherheitslücke im Zusammenhang mit SQL-Datenbanken, die durch mangelnde Überprüfung von Eingabeparameter entstehen. Diese Art der Sicherheitslücke zählt zu eine der häufigsten und ist oftmals besonders kritisch, da Angreifer so an sensible Daten eurer Nutzer gelangen können.

Code-Injections

Code-Injection bedeutet, dass ein Angreifer PHP-Code in eure Anwendung einschleust und die Möglichkeit hat diese auf eurem Server auszuführen. Ein erfolgreicher Code-Injection-Angriff hat zur Folge, dass der Angreifer beliebig eure Scripts und eure Datenbank manipulieren kann. Damit zählt eine Code-Injection zu einer der gefährlichsten Angriffen, ist aber zum Glück nur sehr selten möglich.

Cross Site Scripting (XSS)

Cross-Site-Scripting (XSS) bedeutet das Einschleusen von HTML-Code oder JavaScript-Code in eure Anwendung. Solch ein Angriff kann auf eurer Seite entsprechenden Schaden anrichten, beispielsweise indem Besucher vertrauliche Daten in ein manipuliertes Formular eingeben oder der Besucher auf eine fremde, möglicherweise bösartige Website weitergeleitet wird.

Cross-Site-Request-Forgery (CSRF)

Eine Cross-Site-Request-Forgery (abgekürzt CSRF) beschreibt das Unterschieben eines ungewollten Websiteaufrufs durch einen Angreifer. Ist beispielsweise das Bestellformular nicht ausreichend geschützt, so kann ein Angreifer euren weiteren Besuchern eine Produktbestellung unterschieben, von dem die Besucher nichts ahnen.

Authentifizierung und Autorisierung

Dieser Artikel fasst für euch nochmal die wichtigsten Punkte für die Authentifizierung und Autorisierung zusammen. Es kann als Checkliste benutzt werden, um eine sichere Registrierungs- und Login-Funktionalität auf eurer Website zu implementieren.

Daten validieren

Falls ihr bei Benutzereingaben ein gewisses Datenformat erwartet, z.B. dass die Größe der Wohnung als Zahl angegeben wird, so solltet ihr auch überprüfen dass ihr das richtige Format erhalten habt und nicht jemand versucht durch illegale Eingaben beispielsweise eine SQL-Injection oder Cross-Site-Scripting auszulösen. Dieser Artikel erklärt, wie ihr optimal die Nutzerdaten überprüfen könnt.

Sichere Webanwendungen entwickeln

Der wohl wichtigste Schritt zur sicheren Entwicklung einer Webanwendung ist die Vermeidungen der oberen Schwachstellen (SQL-Injection, Code-Injection etc.). Darüber hinaus könnt ihr als Entwickler aber einiges unternehmen um eure Webanwendung noch sicherer vor Angreifern zu machen.

Eine 100% Sicherheit wird man nie erreichen können. Bei komplexen Anwendungen wird es stets Programmierfehler geben, die zu entsprechenden Sicherheitsproblemen führen können. Um die Auswirkungen von einem Programmierfehler aber möglichst gering zu halten, sollte eine Webanwendung bereits im Entwurf entsprechende Sicherheitsaspekte berücksichtigen. So kann an Angriff vielleicht nicht komplett verhindert werden, aber der Schaden kann hierdurch deutlich reduziert werden.

Neben dem sicheren Entwurf solltet ihr eure Website auch auf Schwachstellen testen (sogenanntes Penetrationtesting) sowie ein regelmäßiges Backup anlegen und sicher verwahren.

Penetrationtesting für PHP

Ein Penetrationtest ist ein umfassender Sicherheitstest einer Webanwendung und erstreckt sich über die Überprüfung der Sicherheit möglichst aller Bestandteile. Als Penetration-Tester versucht man systematisch die Anwendung anzugreifen um so Sicherheitslücken wie beispielsweise SQL-Injections oder Cross-Site-Scripting-Schwachstellen frühzeitig zu identifizieren. Ein Penetrationtest kann sehr aufwendig werden und viel Erfahrung benötigen. Aber ein paar kleine Prozeduren des Penetrationtestings sollte jeder PHP-Entwickler kennen und nutzen.

Das sichere Backup

Ein Servereinbruch geht oftmals mit dem Verlust von Daten einher. Deswegen ist ein regelmäßiges Backup eurer wichtigen Daten unerlässlich. Für die meisten Anwendungen ist insbesondere die Datenbank kritisch, da dort alle Kundeninformationen gespeichert sind. Ein Totalverlust der Datenbank kann dann schnell existenzbedrohend werden. In unserem Artikel Datenbankbackup per PHP erfahrt ihr mehr, wie ihr eure Datenbank regelmäßig sichert.

Autor: Nils Reimers
Zurück: Template-Pattern
Weiter: Authentifizierung in 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

Hoster – Geringste Ausfallzeit

  1. netcup Ø 0 Min.
  2. webgo Ø 0 Min.
  3. Linevast Ø 3 Min.
  4. All-Inkl.com Ø 3 Min.
  5. checkdomain Ø 4 Min.
  6. dogado Ø 6 Min.
  7. Strato Ø 8 Min.
  8. manitu Ø 10 Min.
  9. 1&1 Ø 10 Min.
  10. DomainFactory Ø 14 Min.
» Mehr erfahren

Impressum | Datenschutz | Auf PHP-Einfach.de werben

© PHP-Einfach.de 2003 - 2025

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}