Jeder weiß, dass PHP derzeit die beliebteste Programmiersprache für Webanwendungen ist. Aber wie andere Skriptsprachen weist auch PHP mehrere gefährliche Sicherheitslücken auf. In diesem Tutorial werfen wir daher einen Blick auf einige praktische Tipps, die Ihnen helfen, einige häufige PHP-Sicherheitsprobleme zu vermeiden.
Tipp 1: Nutzen Sie geeignete Fehlerberichte
Normalerweise vergessen viele Programmierer während des Entwicklungsprozesses immer, Programmfehlerberichte zu erstellen. Dies ist ein großer Fehler, da ordnungsgemäße Fehlerberichte nicht nur die besten Debugging-Tools, sondern auch hervorragende Tools zur Erkennung von Sicherheitslücken sind Informieren Sie sich so weit wie möglich über die auftretenden Probleme, bevor die Anwendung tatsächlich gestartet wird.
Natürlich gibt es viele Möglichkeiten, die Fehlerberichterstattung zu aktivieren. Beispielsweise können Sie in der Konfigurationsdatei php.in festlegen, dass es zur Laufzeit aktiviert wird
Fehlerbericht starten
error_reporting(E_ALL);
Fehlerberichterstattung deaktivieren
error_reporting(0);
Tipp 2: Verwenden Sie nicht das Weak-Attribut von PHP
Es gibt mehrere PHP-Eigenschaften, die auf AUS gesetzt werden müssen. Im Allgemeinen sind sie in PHP4 vorhanden, ihre Verwendung wird jedoch in PHP5 nicht empfohlen. Insbesondere in PHP6 wurden diese Attribute entfernt.
Globale Variablen registrieren
Wenn register_globals auf ON gesetzt ist, entspricht dies der Einstellung Umgebungs-, GET-, POST-, COOKIE- oder Servervariablen werden als globale Variablen definiert. Zu diesem Zeitpunkt müssen Sie $_POST['username'] nicht schreiben, um die Formularvariable 'username' zu erhalten. Sie benötigen nur '$username', um diese Variable zu erhalten.
Dann denken Sie bestimmt, dass das Setzen von register_globals auf ON so praktische Vorteile hat, warum es nicht nutzen? Denn wenn Sie dies tun, führt dies zu vielen Sicherheitsproblemen und es kann auch zu Konflikten mit lokalen Variablennamen kommen.
Sehen Sie sich zum Beispiel den folgenden Code an:
if( !empty( $_POST['username'] ) && $_POST['username'] == ‘test123′ && !empty( $_POST['password'] ) && $_POST['password'] == “pass123″ ) { $access = true; }
Wenn register_globals zur Laufzeit auf ON gesetzt ist, muss der Benutzer nur access=1 in einer Abfragezeichenfolge übergeben, um zu erhalten, was auch immer das PHP-Skript ausführt.
Globale Variablen in .htaccess deaktivieren
php_flag register_globals 0
Globale Variablen in php.ini deaktivieren
register_globals = Off
Deaktivieren Sie Magic Quotes wie magic_quotes_gpc, magic_quotes_runtime, magic_quotes_sybase
Legen Sie
in der .htaccess-Datei festphp_flag magic_quotes_gpc 0 php_flag magic_quotes_runtime 0
Eingestellt in php.ini
magic_quotes_gpc = Off magic_quotes_runtime = Off magic_quotes_sybase = Off
Tipp 3: Benutzereingaben validieren
Natürlich können Sie auch Benutzereingaben validieren. Zuerst müssen Sie den Datentyp kennen, den der Benutzer eingeben soll. Auf diese Weise können Sie browserseitig darauf vorbereitet sein, zu verhindern, dass Benutzer Sie böswillig angreifen.
Tipp 4: Vermeiden Sie Cross-Site-Scripting-Angriffe durch Benutzer
In Webanwendungen ist es einfach, Benutzereingaben im Formular zu akzeptieren und dann eine Rückmeldung zu den Ergebnissen zu geben. Beim Akzeptieren von Benutzereingaben wäre es sehr gefährlich, Eingaben im HTML-Format zuzulassen, da dies auch dazu führen würde, dass JavaScript auf unvorhersehbare Weise eindringt und direkt ausgeführt wird. Selbst wenn nur eine solche Sicherheitslücke besteht, können Cookie-Daten gestohlen werden und das Konto des Benutzers gestohlen werden.
Tipp 5: Verhindern Sie SQL-Injection-Angriffe
PHP bietet grundsätzlich keine Tools zum Schutz Ihrer Datenbank. Wenn Sie also eine Verbindung zur Datenbank herstellen, können Sie die folgende mysqli_real_escape_string-Funktion verwenden.
$username = mysqli_real_escape_string( $GET['username'] ); mysql_query( “SELECT * FROM tbl_employee WHERE username = ’”.$username.“‘”);
Okay, in diesem kurzen Artikel gehen wir auf mehrere PHP-Sicherheitsprobleme ein, die während des Entwicklungsprozesses nicht ignoriert werden dürfen. Letztendlich liegt es jedoch beim Entwickler, zu entscheiden, ob und wie er es verwendet. Ich hoffe, dieser Artikel kann Ihnen helfen.
Das Obige stellt mehrere praktische Punkte zum Erstellen einer hochsicheren PHP-Website vor, einschließlich inhaltlicher Aspekte. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.