PHP + MySQLi 7: SQL Injection verhindern

cheat-sheet-codecave-php-mysql-jquery

 

Willkommen zu meiner CodeSnippet Cheat Sheet Reihe TEIL 7, bei der es darum geht, jedem die Arbeit mit den Komponenten MYSQLi + PHP + Jquery zu erleichtern und schnelle Codeschnippsel auf meinem Blog bereitzustellen.

Bei der sogenannten SQL Injection kann ein möchtegern Hacker eine Schwachstelle in MySQL Datenbanksystemen ausnutzen um eigene Abfragen durchzuführen, so zum Beispiel um das Passwort der Adminaccounts abzufragen oder Kreditkarten Informationen. Dies passiert tagtäglich im Netz und kann jeden betreffen, selbst Banken und Behörden blieben davon nicht verschohnt. Es gibt ganze (illegale) Foren im Netz die sich mit exakt diesem Thema bzw. Sicherheitsloch auseinandersetzen und versuchen es auszunutzen.

Im modernen Web ist diese Art von Angriff jedoch nicht mehr so präsent wie in der Vergangenheit. Dennoch kann es bei selbstgeschriebenen Scripts zu Schwachstellen kommen.

Daher empfehle ich, sensible Abfragen bzw. MySQL Befehlen / Statements mit folgendem Code abzusichern.

Ein einfacher Apostroph ‚ in einem Formular reicht, um MySQL zu verwirren und eigenen Code „zu injecten“. Um dies zu verhindern gibt es:

 

MySQL Injection verhindern / Code mit mysql_real_escape_string()

Diesen Befehl lege ich gerne in eine Funktion in meine mysql.inc.php (Siehe Teil 1 und Teil 6 meiner PHP + MYSQLi Reihe) Datei, damit ich von jeder Datei aus, von der ich MySQLi Abfragen durchführe, auch Zugriff auf die Sicherheitsfunktion habe.







Mit folgendem Code könnt ihr MySQL Injections (vorerst) verhindern:

Für eine 100%ige Sicherheit kann ich hier keine Garantie geben, da sich das Internet stehts im Wandel befindet. Dennoch habe ich damit die besten Erfahrungen gemacht, da es hierbei auch nicht zu UTF 8- oder Umlaut- Schwierigkeiten kommt, die Schutzfunktionen verändern diese nämlich gerne.

Wie funktioniert diese Funktion?

Jede Variable die durch ein Formular o.Ä. durch den Nutzer eingelesen wirst (Also z.B. mit $_POST oder $_GET) und dann in die Datenbank geschrieben / abgefragt wird, stellt ein potenzielles Risiko dar. Deshalb ist es wichtig diese mit der hier angegebenen Funktion msecure() abzusichern. Ihr könnt auch direkt mysql_real_escape_string() schreiben, jedoch finde ich das vieeel zu lang und aufwendig. So eine Funktion dient der Übersicht und weniger Schreibarbeit, wir Menschen sind schließlich faul und möchten immer mit so wenig wie möglich Zeiteinsatz das beste Resultat erzielen.

Eine große & vollständige Sammlung aller wichtigen Script-Codes findet ihr im:
CODECAVE Cheat SHEET: HTML + PHP + MySQLi + Jquery

Viel Spaß und passt auf, kein Opfer von SQL Injection zu werden ;)

Kommentar schreiben

0 Kommentare.

Kommentar schreiben