ʥ
Ihre Daten sind 100% gesichert und werden verschlüsselt übertragen
ı
ʦ
Wir verwenden Cookies, um Ihnen Inhalte bereitzustellen und ein angenehmeres Surfen zu ermöglichen.
ı

Sie haben den Artikel erfolgreich in den Warenkorb gelegt.
Was möchten Sie als nächstes tun?

Weiter einkaufen Zur Kasse

Mit PHP SQL Injections ausschneiden

Jeder PHP Programmierer muss aufpassen, dass der Code, der geschrieben wird, nicht fahrlässig geschrieben oder „gefuscht“ wird. Dazu zählen vor allem Maßnahmen zur Absicherung jeglicher Vorgänge, die mit dem Code verbunden sind. Diese betreffen Aktionen und Eingaben durch den User, denn dieser ist nicht immer freundlich.

Was ist eine SQL Injection?
Überall wo der User Eingaben auf Ihrer Seite machen kann, kann er versuchen versteckt Schadskripte einzufügen, insbesondere wenn Sie sich auf die Richtigkeit der Eingabe vom User verlassen. Eine solche Stelle, die auch leicht zu erkennen ist, ist die URL. SQL Injections sind in der URL versteckte Snippets vom Code, die vom Server unter Umständen direkt ausgeführt werden. Da passieren ganz böse Sachen und man muss sich absichern, dass die URL der Seite nicht unverarbeitet geparst wird. In der URL können ganze SQL Abfragen oder weitere Befehle eingeschleust werden.



Beispiel – was soll man eingeben:

Index.php?mID=13

Was kann man bekommen:

Index.php?mID=13; SLEEP(2500);

Was kann man mit PHP gegen eine SQL Injection tun?

Das hier ist keine Anleitung, die alle möglichen SQL Injections abfängt, sondern wir geben Ihnen eine Vorlage, auf der Sie aufbauen können. Wichtig sind vor allem jegliche Usereingaben, in dem Fall ist die URL zu prüfen und zu verändern, bevor Sie diese auswerten.

Die URL befindet sich in der Variable $_SERVER[‘REQUEST_URI‘]. Diese Variable sollten Sie durch eine Funktion parsen, die Ihnen die geparste und bereits frei von Injections URL zurückgibt.

function ParseURLForInjections($sStr) {
    $sNewStr = stripslashes(urldecode($sStr));
if (
strpos($sNewStr,"")!==false ||
strpos($sNewStr,"")!==false || 
strpos($sNewStr,"")!==false || 
strpos($sNewStr,"{")!==false || 
strpos($sNewStr,"etc/")!==false
)
mail(“Meine@Email.com”, “”Mögliche Injection”, “SQL Injection Versuch: 
http://{$_SERVER['HTTP_HOST']}".urldecode($_SERVER['REQUEST_URI'])."”, “From: SQL Injection Dienst nMIME-Version: 1.0nContent-Type: text/html; charset=utf-8”);
$sNewStr = str_replace("","",$sNewStr);
    $sNewStr = str_replace("","",$sNewStr);
    $sNewStr = str_replace("@","",$sNewStr);
    $sNewStr = str_replace("}","",$sNewStr);
    $sNewStr = str_replace("{","",$sNewStr);
    $sNewStr = str_replace("--","",$sNewStr);
    $sNewStr = str_replace("'","",$sNewStr);
    $sNewStr = str_replace(";","",$sNewStr);
Return $sNewStr;
}

Dann können Sie am Anfang Ihrer Skripte die URL so parsen:

$_SERVER[‘REQUEST_URI‘] = ParseURLForInjections ($_SERVER[‘REQUEST_URI‘]);

Was passiert hier?

  • Wir nehmen die angeforderte URL und geben diese unserer Funktion zur Prüfung.

  • Falls wir auf eine der standard-benutzten Versuche stoßen, so schicken wir uns selber eine E-Mail, damit wir schnell reagieren können, falls man es mit vielen URLs gleichzeitig versucht. In solchen Fällen kann man den Angreifer einfach vom Server aussperren.

    Sie können hier gerne weitere Klausel mit || hinzufügen, je nachdem welche Erfahrung Sie mit Ihren URLs gemacht haben. Eine übliche Liste sieht viel länger aus.

  • Sie gehen hin und ersetzen alle für eine URL ungewöhnlichen Zeichen. Hier können Sie die Befehle auch weiter ergänzen.

  • Wenn Sie mit dem Ersetzen fertig sind, so geben Sie die überarbeitete URL zurück.


Das ist alles - viel Erfolg.
Wenn Sie fachliche Beratung benötigen, so stehen wir gerne zur Verfügung.

Sedcardsystem | MK1 v8.7.7 | RegNr. 18386 | webdesign Œ
û