Verbessern Sie die Sicherheit unserer Anwendungen mit PHP

PHP hat sich zu einer vielseitigen Sprache entwickelt, die es uns ermöglicht, die über ein HTML- Formular eingegebenen Daten zu manipulieren. Natürlich gibt es in seiner Konstitution mehr Werkzeuge und Funktionen als nur diese.

Die Vielseitigkeit und Benutzerfreundlichkeit machen es zu einer der weltweit am häufigsten verwendeten Sprachen für Webprojekte, angefangen von einfachen Kontaktformularen bis hin zu großen Anwendungen in den Anfängen als Facebook .

Das Problem der Vielseitigkeit und Benutzerfreundlichkeit besteht darin, dass der Entwickler nicht gezwungen ist, sicheren Code zu schreiben. Wenn der Code nicht über sehr unsichere Funktionen verfügt, funktioniert er einwandfrei, und genau hier liegen die Probleme.

Sicherheit von Webanwendungen

Die Sicherheit von Webanwendungen ist etwas, das in PHP nicht von Anfang an vorhanden ist. Dies macht es jedoch nicht zu einer unsicheren Sprache, da die Sicherheit einer Reihe von Techniken und Arbeitsstilen entspricht, die ein Programmierer kennen muss, um sie anwenden zu können Ihre Skripte

Frameworks
Es ist wahr, dass mit dem Erscheinen von Frameworks standardmäßig viele Sicherheitsfunktionen enthalten sind, jedoch nicht jeder Entwickler ein Framework in alten Anwendungen verwendet hat und es für einige Funktionen möglicherweise ein Übermaß ist, ein Framework zu verwenden.

Die Schlüssel zum Erreichen der Sicherheit in unseren PHP- Anwendungen sind: Steuern und Debuggen der vom Benutzer in das Formular eingegebenen Daten, Überprüfen der Herkunft der von unserer Anwendung empfangenen HTTP- Anforderungen und Vermeiden der direkten Ausführung von Anweisungen über Formulare.

Datenfilterung

Es gibt eine Regel in der Programmierung und sie ist universell, das heißt, sie gilt nicht nur für PHP . Alle Daten, die nicht von der Anwendung generiert werden, sind potenziell bösartig. Das bedeutet, wenn es sich nicht um ein Ergebnis handelt, das wir haben programmiert können wir nicht trauen.

Dieses Prinzip gilt für Formularwerte, Dateien und Datenbanken . Ein erster Schritt zur Verbesserung unserer Sicherheit besteht darin, Daten zu filtern, wenn wir mit diesen Elementen interagieren müssen.

Wir werden einige der Best Practices auflisten, die wir anwenden können, wenn wir die Daten filtern, die in unser Formular eingegeben werden:

Verwenden Sie Listen mit zulässigen Werten
Mit dieser Vorgehensweise wissen wir, dass, wenn die Daten, die per Formular eingehen, unsere Liste der zulässigen und sicheren Werte nicht durchlaufen, sie nicht an die Verarbeitung weitergeleitet werden sollten, an dieser Stelle eine Nachricht an den Benutzer gesendet werden sollte, um ihre Daten zu korrigieren.

Korrigieren Sie niemals ungültige Daten
Es mag verlockend klingen, ein sehr intelligentes System zu entwickeln, das die Daten mit Inkonsistenzen korrigiert. Auf lange Sicht kann dies jedoch zu Problemen und Schwachstellen führen. Wenn wir also Unregelmäßigkeiten feststellen, sollten wir diese nicht verarbeiten.

Verwenden Sie die Namenskonvention
Mit dieser Praxis können wir die Daten und sicheren Werte von den vom Benutzer eingegebenen Daten und Werten unterscheiden, wodurch wir die Verwendung der ersten für die Verarbeitung innerhalb der Programmierung verstärken.

Arten der Filterung

Es gibt zwei Arten der Filterung, die wir durchführen können: die erste von Werten, die wir kennen, und die zweite von Werten, die wir nicht kennen.

See also  Ändern Sie die Größe von Bildern mit dem Kontextmenü von Windows 10

Die erste ist sehr einfach durchzuführen, wir sollten nur Routinen mit Listen bekannter Elemente durchführen und mit diesen vergleichen, dies ist jedoch umständlich und in größeren Anwendungen schwierig durchzuführen. Die zweite besteht darin, Routinen zu erstellen, die die Struktur des Werts auswerten. Wenn diese der von uns als sicher erachteten Struktur entsprechen, lassen wir sie an die Verarbeitung weiterleiten. Andernfalls wird ein Fehler ausgegeben, der dynamischer Natur ist. Dies ist das empfohlene Format.

Nachfolgend sehen wir einen Beispielcode für den ersten Filtertyp:

Im folgenden Code sehen wir, wie wir ein Formular erstellen, das ein Auswahlelement für den Benutzer zum Auswählen einer Farbe enthält, da der Benutzer die einzugebenden Daten nicht direkt schreiben muss. Dies kann jedoch zu dem Fehler führen, dass die Informationen nicht validiert werden Wir haben eine Sicherheitslücke, weil wir mit einem Formular mit denselben Namen potenziell gefährliche Informationen erhalten können.

Aus diesem Grund wertet unser Skript die möglichen Werte aus, sobald der Wert des Formulars über POST gesendet wurde. Wenn dies einer der erwarteten Werte ist, übergeben wir ihn an unsere sichere Werteanordnung, wie unten dargestellt.

Verbesserung-Sicherheit-Anwendungen-php.jpg

Damit haben wir das Problem auf einfache Weise gelöst. Wenn die Liste jedoch statt drei Farben hundert Farben hätte, wäre die Geschichte der Einfachheit anders verlaufen.

Im folgenden Beispiel werden wir ein vom Benutzer eingegebenes Feld in geeigneter Weise dynamisch validieren. Hierzu müssen wir reguläre Ausdrücke verwenden und auf diese Weise die Eingabe von Zeichen vermeiden, die unsere Verarbeitung gefährden, sowie die Größe der Eingabe auswerten und somit vermeiden Ein Überlauf oder eine Überlastung unseres Datentyps bei der Abarbeitung des Programms. Sehen wir uns den Code im Bild an:

See also  So stellen Sie den zuletzt geschlossenen Tab in Chrome oder Firefox wieder her

Verbesserung-Sicherheit-Anwendungen-PHP-2.jpg
Hier ist der Schlüssel, um eine Validierung zu erreichen, zu wissen, dass wir verarbeiten möchten. Im Fall eines Benutzernamens werden normalerweise alphanumerische Zeichen und Bindestriche abgefragt. Aus diesem Grund müssen wir dies im regulären Ausdruck validieren und es muss auch höher sein dass 0 Zeichen und maximal 32, wenn die Eingabe durch den Benutzer all dies erfüllt, geschieht die Validierung, das Beste von allem ist, dass dies mit einem Wert wie hundert funktioniert, da es völlig dynamisch ist.

Schutz vor Skripten von anderen Websites

Eine weitere Bedrohung, vor der wir uns schützen müssen, ist die Ausführung von Skripten von anderen Sites. Dank AJAX können wir Formulare vom Client an eine Route senden, einschließlich der Art der Anforderung und der gewünschten Werte.

Schwäche
Diese Art von Schwachstelle macht es sehr einfach, unser Formular zu überprüfen und unsere Felder zu überprüfen, wo diese Namen und die HTTP- Methode versuchen, unsichere Werte zu senden. Um dies zu vermeiden, müssen wir Techniken anwenden, mit denen wir überprüfen können, woher die Anforderung stammt und ob sie stammt stellen Sie sicher, dass die Ausführung zugelassen wird, andernfalls wird verhindert, dass der Pfad innerhalb unseres Programms fortgesetzt wird.

Um dieses Problem zu vermeiden, müssen wir ein System von Token und Sitzungen einrichten, damit beim Senden des Formulars geprüft wird, ob die Sitzung mit der auf sichere Weise eingerichteten Sitzung identisch ist und der böswillige Benutzer nicht fortfahren kann.

SQL Injection

Ein wichtiges Ziel eines Angreifers ist es, seinen Code in unsere Umgebung einzufügen. Dazu verwenden sie SQL- Code-Injections. Dieser Angriff wird als SQL-Injection bezeichnet. Bei unsicheren Formularen und unangemessener Verarbeitung können wir SQL-Anweisungen direkt ohne SQL-Injections empfangen Grenzen. Zum Beispiel, wenn unsere SQL- Bewertung in unserem PHP- Skript wie folgt lautet:

See also  So subtrahieren Sie Daten in Excel 2016

Verbesserung-Sicherheit-Anwendungen-PHP-3.jpg

Wir können jeden Benutzer des Systems als Benutzernamen verwenden und für das Kennwort zwei Bindestriche “-” verwenden. Damit können wir die Sicherheit problemlos übergeben, da zwei Skripte ein SQL- Kommentar sind und das Kennwort daher nicht ausgewertet wird.

Die richtige Methode zum Bewerten einer SQL , die vom Benutzer stammt, besteht darin, die speziellen und gefährlichen Zeichen zu entfernen und nur sichere Ausdrücke zu bewerten. Nachfolgend sehen wir ein Beispiel, wie Sie den vorherigen Fall vermeiden können:

Das erste, was wir tun müssen, ist, die Daten zu bereinigen , dh zu vermeiden, dass sie rein aus dem Formular in unser SQL gelangen . Die zweite Sache, die wir bewerten müssen, ist, dass, wenn die beiden Werte dem Zugriff entsprechen, aber dieser letzte der Logik jedes einzelnen entspricht, wir im Bild sehen, wie wir das Ziel erreichen:

Verbesserung-Sicherheit-Anwendungen-PHP-4.jpg
Hier haben wir das vorbereitete Anweisungstool verwendet, mit dem wir die PDO- Bibliothek für die Verbindung mit der Datenbank verwenden können. Dadurch erreichen wir, dass das, was eingegeben wird, niemals in einem anderen Kontext genommen wird, der keine Daten ist, sondern stattdessen Mit der POST- Methode, die wir für unser sicheres Array verwendet haben, sind unsere Daten bereits bewiesen, sodass das Risiko geringer ist.

Damit haben wir dieses Lernprogramm abgeschlossen, da wir sehen, dass die Maßnahmen, die wir ergreifen können, um unsere Anwendung sicherer zu machen, einfach sind und keine Anstrengungen für den Menschen erfordern. Sie helfen uns jedoch, die häufigsten und möglicherweise die am häufigsten auftretenden Angriffe zu vermeiden sie sind gegeben Es gibt eine schlechte Vorstellung über PHP von denen, die sagen, es sei eine unsichere Sprache, aber die Realität ist, dass die Unsicherheit vom Programmierer verursacht wird, da die Sprache nur Tools enthält, mit denen wir Angriffe auf unsere Anwendungen durch Daten verbessern und vermeiden können, die Geben Sie den Benutzer ein.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *