Ein Fehler, den viele Entwickler machen, ist die Verwendung von Cookies , kleinen Textdateien, in denen Informationen über unsere Internetaufgaben, den Zugriff usw. gespeichert sind.
Diese Cookies können leicht von jedem Browser gelesen werden, zum Beispiel in Firefox mit Firebug oder in Chrome mit der rechten Maustaste, dann gehen wir zum Menü Inspect Element.
Im Bild sehen wir ein Beispiel, wie der Programmierer ein Cookie für die Benutzeranmeldung erstellt und die Zugangsdaten öffentlich zugänglich macht.
Das nächste Bild ist ein weiteres schlechtestes Beispiel dafür, dass Google die Zugriffe mit Benutzern und Passwörtern indiziert hat.
Das Richtige ist, Sitzungen zu verwenden, in denen die Daten codiert sind.
<? session_start (); $ _SESSION ['key'] = "key"; $ _SESSION ['user'] = "usu"; ?>
Dies würde wie die verschlüsselte Sitzungsvariable aussehen, viel sicherer, weil es schwer zu lesen ist:
phpsessid = sb85p15841p6l1dfg7oo8hlsc85;
Dann überprüfen wir auf jedem Bildschirm die Sitzung auf jeder Seite, die wir öffnen, und gehen davon aus, dass es sich um einen eingeschränkten Bereich handelt.
[size = 4] <? session_start (); if ($ _SESSION ['user'] = "usu") { Echo 'Ich bin immer noch im Web'; } else { echo 'ist nicht angemeldet'; } ?> [/ size]
Sitzungen sind keine vollständige Lösung, da Session-Hijacking eine andere Hacking-Methode ist . Dies passiert, wenn ein Angreifer den Wert der Sitzung liest und dann versucht, von einem anderen Computer aus darauf zuzugreifen.
<? session_start (); $ _SESSION ['REMOTE_ADDR'] = $ _SERVER ['REMOTE_ADDR']; $ _SESSION ['HTTP_USER_AGENT'] = $ _SERVER ['HTTP_USER_AGENT']; ?>
Mit dem vorherigen Code erstellen wir eine Sitzung, in der die IP-Adresse und der Browser, von dem aus auf das Web zugegriffen wurde, gespeichert werden. Anschließend prüfen wir, ob während der aktiven Sitzung jemand versucht, sich von einer anderen IP-Adresse aus anzumelden, oder ob ein anderer Browser nicht auf das Web zugreifen kann
[size = 4] <? session_start (); if ($ _ SESSION ['REMOTE_ADDR']! = $ _SERVER ['REMOTE_ADDR'] || $ _SESSION ['HTTP_USER_AGENT']! = $ _SERVER ['HTTP_USER_AGENT']) { exit (); }?> [/ size]
So ähnlich verhält es sich bei Facebook , wenn Sie von einem anderen Gerät oder einer anderen IP-Adresse in einer anderen Stadt aus zugreifen, da es weiterhin schützt, von wo aus Sie häufig zugreifen.
Eine Möglichkeit, gefährdete Websites zu finden, besteht darin, die Suchmaschine info_page.php = oder catalogo.php = einzutragen
Dies gibt uns eine Liste der anfälligen Websites. Alle Websites, die mit .php? Variable = enden, können anfällig sein.
: Um zu testen, ob es anfällig ist, schreiben Sie die URL ohne Wert in die Beispielvariable :
midominio.com/info_page.php?id=
Wenn das Web anfällig ist, antwortet es mit einem MySQL-Fehler, der wie folgt lautet:
Sie haben einen Fehler in Ihrer SQL-Syntax. In dem Handbuch, das Ihrer MySQL-Serverversion entspricht, finden Sie die richtige Syntax für “near” in Zeile 1
: Wenn wir eine Domain mit dieser Sicherheitsanfälligkeit finden, können wir versuchen, festzustellen, ob wir die Benutzer- oder Administratortabelle finden und wie viele Spalten sie enthält :
www.mydomain.com/info_page.php? id = -1 + union + all + select + 1,2,3, group_concat (user_name, 0x3a,
password),5+from+administrators user_ password), 5 + von + Administratoren
In diesem Fall werden der Schlüssel und der Benutzeradministrator zurückgegeben. Um eine SQL-Verletzung zu vermeiden, ist es erforderlich, Sitzung und nicht Parameter per URL zu verwenden, wenn die Parameter mit einer Funktion oder Klasse bereinigt werden sollen, die überprüft, dass der Parameter keine SQL-Befehle oder Javascript enthält die per formular oder per url gesendet wird.