Heim  >  Artikel  >  Backend-Entwicklung  >  Mehrere praktische Punkte zum Erstellen hochsicherer PHP-Websites

Mehrere praktische Punkte zum Erstellen hochsicherer PHP-Websites

WBOY
WBOYOriginal
2016-08-08 09:33:05928Durchsuche

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 fest
php_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.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn