Heim >Backend-Entwicklung >PHP-Tutorial >Einige Sicherheitsprobleme bei der PHP-Entwicklung wurden kompiliert

Einige Sicherheitsprobleme bei der PHP-Entwicklung wurden kompiliert

不言
不言Original
2018-04-04 14:24:542617Durchsuche

Sortieren Sie einige Sicherheitsprobleme bei der PHP-Entwicklung



PHP bietet Entwicklern große Flexibilität, bringt aber auch potenzielle Sicherheitsrisiken mit sich. Ich werde hier einen Artikel übersetzen und einige Gefühle aus meiner eigenen Entwicklung hinzufügen.





Einführung

Bei der Entwicklung eines Internetdienstes müssen Sie stets den Sicherheitsgedanken im Auge behalten und im entwickelten Code widergespiegelt. Die PHP-Skriptsprache macht sich keine Sorgen um Sicherheitsprobleme, insbesondere für die meisten unerfahrenen Entwickler. Wann immer Sie über eine Transaktion sprechen, bei der es um Geld geht, müssen Sie besonderes Augenmerk auf Sicherheitsaspekte legen, wie z. B. die Einrichtung eines Forums oder eines Warenkorbs.


Allgemeine Punkte des Sicherheitsschutzes

Vertrauen Sie dem Formular nicht

Für die allgemeine Javascript-Frontend-Überprüfung, da das Verhalten des Benutzers kann nicht bekannt sein. Wenn Sie beispielsweise die JavaScript-Engine des Browsers ausschalten, werden schädliche Daten an den Server gesendet. Die Überprüfung muss auf der Serverseite erfolgen und die an jedes PHP-Skript übergebenen Daten überprüfen, um XSS-Angriffe und SQL-Injections zu verhindern.


Vertrauen Sie dem Benutzer nicht

Gehen Sie davon aus, dass alle Von Ihrer Website empfangene Daten. Jedes Datenelement muss bösartigen Code und versteckte Bedrohungen enthalten.


Globale Variablen schließen

Nehmen Sie die folgende Konfiguration in der php.ini vor Datei:

register_globals = Off



Wenn diese Konfigurationsoption aktiviert ist, bestehen große Sicherheitsrisiken. Beispielsweise gibt es eine Skriptdatei „process.php“, die die empfangenen Daten in die Datenbank einfügt. Das Formular zum Empfangen von Benutzereingabedaten kann wie folgt aussehen:

<input name="username" type="text" size="15" maxlength="64">



Auf diese Weise registriert PHP nach der Übermittlung der Daten an die Datei „process.php“ eine Variable „$username“ und übermittelt diese Variablendaten an die Datei „process.php“. Gleichzeitig wird eine solche Variable für jede POST- oder GET-Anfrage festgelegt Parameter. Wenn die Initialisierung nicht angezeigt wird, tritt das folgende Problem auf (Referenz: http://www.lai18.com/content/434606.html)

<?php
// Define $authorized = true only if user is authenticated
if (authenticated_user()) {
    $authorized = true;
}
?>



Hier wird davon ausgegangen, dass die Funktion „authenticated_user“ den Wert der Variablen „$authorized“ ermitteln soll. Wenn die Konfiguration „register_globals“ aktiviert ist, kann jeder Benutzer eine Anfrage senden, um den Wert der Variablen „$authorized“ auf einen beliebigen Wert zu setzen, der umgangen werden soll diese Überprüfung.

Alle diese übermittelten Daten sollten über das vordefinierte integrierte globale Array von PHP abgerufen werden, einschließlich $_POST, $_GET, $_FILES, $_SERVER, $_REQUEST usw., wobei $_REQUEST ein $_GET/$ ist _POST/$_COOKIE ist eine gemeinsame Variable aus drei Arrays. Die Standardreihenfolge ist $_COOKIE, $_POST, $_GET.


Empfohlene Sicherheitskonfigurationsoptionen

Setzen Sie „error_reporting“ auf „Aus“: Fehlerinformationen werden den Benutzern nicht angezeigt. Sie können es während der Entwicklung auf „EIN“ setzen.

Setzen Sie „safe_mode“ auf „Aus“.

register_globals auf Aus setzen

Die folgenden Funktionen deaktivieren: system, exec, passhru, shell_exec, proc_open, popen

open_basedir auf /tmp setzen, damit Sitzungsinformationen angezeigt werden können gespeicherte Berechtigungen und legen Sie ein separates Website-Stammverzeichnis fest.

ist auf Aus eingestellt.

ist auf Aus eingestellt.

🎜>

SQL-Injection-Angriff


Bei SQL-Anweisungen, die die Datenbank betreiben, muss besonderes Augenmerk auf die Sicherheit gelegt werden, da Benutzer möglicherweise bestimmte Anweisungen eingeben, die dazu führen, dass die ursprünglichen SQL-Anweisungen ausgeführt werden ihre Funktionen ändern. Ähnlich dem folgenden Beispiel:




Erweitertes Lesen

Die Reihe „PHP Security Programming Series“ mit technischen Artikeln wird zusammengestellt und gesammelt.

PHP Security Programming Series Collection sammelt Wissen über PHP-Sicherheitsprogrammierung und bietet Lernreferenzen für PHP-Sicherheitsprogrammierung

1discuz's PHP verhindert SQL-Injection-Funktion

2php-Methode zur Verhinderung von XSS-Angriffen

3PHP Sichere Programmierung: Ausgabe entkommen

4PHP sichere Programmierung: Benutzereingaben filtern

5PHP sichere Programmierung: Benutzerfreundlichkeit und Daten Tracking

6 PHP-sichere Programmierung: Lassen Sie nicht zu, dass irrelevante Personen die Fehlermeldung sehen

7PHP-sichere Programmierung: Sicherheit von register_globals

8PHP-sichere Programmierung: einige Prinzipien des Website-Sicherheitsdesigns

9PHP-Sicherheitsprogrammierung: Über Formular-Spoofing Einreichung

10PHP-sichere Programmierung: HTTP-Request-Spoofing

11PHP-sichere Programmierung: Die Datenbankzugriffsberechtigungen nicht offenlegen

12 Sichere PHP-Programmierung: Abwehr von Cross-Site Request Forgery CSRF

13 Sichere PHP-Programmierung: Formulare und Datensicherheit

14 PHP-Sicherheitsprogrammierung: Angriffe aus der Semantik von URLs

15 PHP-Sicherheitsprogrammierung: Abwehr gegen Datei-Upload-Angriffe

16PHP-sichere Programmierung: Abwehr von Cross-Site-Scripting-Angriffen

17PHP-sichere Programmierung: Sitzung behoben um eine legitime Sitzung zu erhalten

18PHP sichere Programmierung: SQL-Injection verhindern

19PHP sichere Programmierung: Cookie-Offenlegung führt zur Sitzung Hijacking

Sichere 20PHP-Programmierung: Offenlegung des Quellcodes verhindern

Sichere 21PHP-Programmierung: Achten Sie auf Hintertür-URLs

Sichere 22PHP-Programmierung: Abwehr von Session-Hijacking

Sichere 23PHP-Programmierung: Brute-Force-Angriff

24PHP Secure Programming: Passwort-Sniffing und Replay-Angriffe

25PHP Secure Programming: Sichere Praktiken zum Merken des Anmeldestatus

26PHP-sichere Programmierung: Shell Command Injection

27PHP-sichere Programmierung: Risiken beim Öffnen von Remote-Dateien

28PHP Sichere Programmierung: Sicherheitslücke beim Erraten von Dateiverzeichnissen

29PHP Sichere Programmierung: Verhindert die Manipulation von Dateinamen

Sichere 30PHP-Programmierung: Datei enthält Code-Injection-Angriffe

Sichere 31PHP-Programmierung: Bessere Sitzungsdatensicherheit

32PHP Sichere Programmierung Programmierung: Quellcode-Sicherheit von Shared Hosting

33PHP-Sicherheitsprogrammierung: Sitzungsdateninjektion

34PHP-Sicherheitsprogrammierung: Host Durchsuchen des Dateiverzeichnisses

35PHP-sichere Programmierung: PHP-Sicherheitsmodus

36php-Sicherheit verwendet stattdessen $, um den Wert direkt abzurufen von $_GET Zeichen-Escape

37php-Strategie zur Verhinderung von Sicherheitslücken zur Schaffung eines leistungsstarken Webs

38Welcher XSS-Angriff? PHP verhindert XSS-Angriffsfunktion

39 Methoden zum Parsen von PHP, um wiederholte Formularübermittlungen zu verhindern

40php-Sicherheitshund Schwanznerz

41PHP verhindert die domänenübergreifende Formularübermittlung

42php verhindert SQL-Injection, detaillierte Erklärung und Prävention

43php Verhindern Sie SQL-Injection-Codebeispiele

44php Verhindern Sie SQL-Injection-Beispielanalysen und mehrere häufige reguläre Angriffsausdrücke

45PHP Sicherheit: Verhindern Sie, dass Ihr Quellcode oder wichtige Konfigurationsinformationen offengelegt werden

46 Ein einfaches Beispiel für PHP, das die wiederholte Übermittlung von Daten in Beiträgen verhindert

47PHP-Methode zur Verhinderung der Übermittlung gefälschter Daten über eine URL

48PHP-Zusammenfassung mehrerer gängiger Methoden zur Verhinderung der wiederholten Übermittlung von Formularen

49php-Methode, um die Übermittlung gefälschter Daten über die Adressleisten-URL zu verhindern

50php-Methode, um die Übermittlung von Remote-Formularen außerhalb des Standorts zu verhindern

51 Beispiele für PHP-Filter-Paging-Parameter zur Verhinderung von SQL-Injection

52 PHP-Sicherheit: Mögliche Angriffe und Lösungen bei der Installation in Apache Modus

53 Dateisystemsicherheit und vorbeugende Maßnahmen für PHP-Sicherheit

54 Dateisystemsicherheit für PHP-Sicherheit – Null Zeichenproblem

55 PHP-Sicherheit Datenbanksicherheit – SQL-Injection und vorbeugende Maßnahmen

56 Einführung in die PHP-Sicherheit und allgemeine Grundsätze

57PHP-Sicherheit: Mögliche Angriffe und Lösungen bei der Installation im CGI-Modus

58PHP-Sicherheit: Vom Benutzer übermittelte Daten

59PHP Security Database Security – Design, Verbindung und Verschlüsselung

60PHP Security Magic Quotes – Was sind Magic Quotes und wie um sie zu verwenden

61PHP Security Hidden PHP Script Extension

62PHP Security Use Register Globals

63PHP-Sicherheitsfehlerbericht

64php-Methoden zur Verhinderung böswilliger Aktualisierungen und Ticketaktualisierungen

65php Zusammenfassung der Methoden, um die Aktualisierung der Website zu verhindern

Häufige Sicherheitslücken der 66PHP-Website und Zusammenfassung der entsprechenden vorbeugenden Maßnahmen

Verwandte Empfehlungen:

Verwandte Zusammenfassung von Sicherheitsproblemen in der PHP-Entwicklung_PHP-Tutorial

Das obige ist der detaillierte Inhalt vonEinige Sicherheitsprobleme bei der PHP-Entwicklung wurden kompiliert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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