Vom Nutzer übermittelte Daten
 
  In vielen PHP Programmen liegt die größte Schwäche nicht
  an der Sprache selbst, sondern bloß an Code, der nicht mit dem nötigen
  Augenmerk auf die Sicherheit geschrieben wurde. Deshalb sollten Sie sich
  immer Zeit nehmen, die Implikationen eines gegebenen Codestücks zu bedenken,
  um einen möglichen Schaden durch eine eventuell unerwartete übergebene
  Variable festzustellen.
  
   Beispiel #1 Gefährliche Verwendung von Variablen
   
<?php
// lösche eine Datei aus dem Benutzer-Verzeichnis...
// oder vielleicht dem eines anderen Benutzers?
unlink ($evil_var);
// Schreibe die Log-Information von deren Zugriff...
// oder vielleicht einen /etc/passwd Eintrag?
fputs ($fp, $evil_var);
// Führe etwas triviales aus... oder rm -rf *?
system ($evil_var);
exec ($evil_var);
?>
    
   
  
  
  Sie sollten Ihren Code immer sorgfältig kontrollieren, um eine sorgfältige
  Prüfung irgendwelcher von einem Web-Browser übertragenen Variablen
  sicherzustellen, und sich selbst folgende Fragen stellen:
  
   - 
    
     Wird sich dieses Skript nur auf die vorgesehenen Dateien auswirken?
    
   
- 
    
     Kann auf ungewöhnliche oder unerwünschte Daten reagiert werden?
    
   
- 
   
     Kann dieses Skript auf nicht vorgesehene Art genutzt werden?
    
   
- 
    
     Kann dies in Verbindung mit anderen Skripten in einer negativen
     Art benutzt werden?
    
   
- 
    
     Werden alle Transaktionen ausreichend geloggt?
    
   
  Wenn Sie sich diese Fragen anstatt danach schon während des Schreibens des
  Skriptes stellen, ersparen Sie sich das unangenehme Umschreiben, wenn eine
  Erhöhung der Sicherheit erforderlich wird. Mit dieser Art zu denken werden
  Sie die Sicherheit des Systems zwar nicht garantieren, aber sie können
  helfen, sie zu erhöhen.
 
 
  Verbessern Sie die Sicherheit, indem Sie Komfort-Einstellungen deaktivieren,
  die die Herkunft, die Gültigkeit oder die Integrität von Eingabedaten
  verschleiern. Die implizite Erstellung von Variablen und ungeprüfte Eingaben
  können zu Sicherheitslücken wie Injection-Attacken und Datenmanipulation
  führen.
 
 
  Funktionalitäten wie register_globals und
  magic_quotes (beide in PHP 5.4.0 entfernt) trugen früher
  zu diesen Risiken bei, indem sie automatisch Variablen aus Benutzereingaben
  erzeugten und Daten inkonsistent maskierten. Obwohl sie nicht mehr in PHP
  enthalten sind, bleiben ähnliche Risiken bestehen, wenn die Verarbeitung von
  Eingaben nicht richtig gehandhabt wird.
 
 
  Aktivieren Sie
  error_reporting(E_ALL), um
  nicht initialisierte Variablen zu erkennen und Eingaben zu validieren.
  Verwenden Sie strikte Typen
  (declare(strict_types=1),
  eingeführt in PHP 7), um Typsicherheit zu erzwingen, unbeabsichtigte
  Typumwandlungen zu verhindern und die allgemeine Sicherheit zu verbessern.