MySQL Hacker sicher machen - aber wie?

martinhio

Grünschnabel
Hallo und guten Abend,

ich möchte via PHP, JavaApplets und MySQL einige verschiedene DB, die der USER an sich in Teilen verändern kann.

Der Umfang der Änderungen soll mindestens 3600 Änderungs-Zugriffe pro Tag verkraften, aber das nur nebenbei.

Ich habe nach einigen Recherchen nun die Befürchtung, dass nach den erfolgreichen Hacks auf den CCC und auf über 40.000.000 Kreditkartendaten in den USA, sowie u.a. Siemens (Chip 02/2005) auch andere(so wie meine) ausgespäht und manipuliert werden könnten.

Da ich bei meinem Kenntnisstand mir nicht erklären kann, wie ich DB manipulieren kann und ich von sog. Table Injections gehört habe,
wäre es für alle hilfreich,wie man die eigenen DB vor Fremdzugriffen schützen kann.

Bin für jede Hilfe dankbar.
 
SQL-Injection passiert zum Beispiel durch Folgendes:
PHP:
<?
//DB-Verb. herst.

//Eingabe aus einem Suchfeld (normal per $_GET...):
$suchwort="'; DELETE FROM tabelle WHERE textfeld LIKE '";

$result=mysql_query("SELECT * FROM tabelle WHERE textfeld LIKE '%".$suchwort."%'");

//Ergebnisse auslesen...
?>
Wenn man das Suchwort in das Query einsetzt ergeben sich folgende zwei Querys, wovon eins Deiner Datenbank einigen Schaden zufügen kann:
Code:
SELECT * FROM tabelle WHERE textfeld LIKE '%'; 
DELETE FROM tabelle WHERE textfeld LIKE '%'
Verhindern lässt sich das in diesem Fall durch Verwendung der Funktion [phpf]mysql_real_escape_string[/phpf].
Die Suche über Google nach SQL-Injection gibt massig Ergebnisse. Da werden bestimmt auch weitere Möglichkeiten erörtert.

Gruß hpvw
 
PHP MySQL Hacker sicher machen - aber wie?

Danke :)

Also SQL Injections sind via Eingabe im Suchfeld möglich.

Geht es auch über die Adresszeile(siehe die eigene oben...)?

Welche Schwachstellen gibt es ansonsten für PHP und MySQL ?

Include und die Rechtevergabe sollen schon ziemlich viel Mist möglich machen...


Gruß
 
Hi

Ansich sollte es im Allgemeinen eh der Fall sein, daß User-Eingaben, bevor diese ausgeführt werden, geprüft werden sollten.
Weiter sollte man NIE eine User-Eingabe includen (z.B. als URL-POST-String).
Auf so eine Idee wäre ich selber nie gekommen, aber es gibt massenhaft Script, die eine übergebene URL includen, wodurch es so möglich ist, daß 'mein' Code auf DEINEM Space läuft, und dann sind mir Tür und Tor geöffnet.
(z.B. ..../script.php?url=http://www.fremdercode.php)

Dieses Vorgehen ist aber nicht auf allen Servern möglich ... ist glaube dort eine Einstellungssache, die die Sicherheit des Server's betrifft (als Normal-Space-Bezahler hat man dadrauf keinen Zugriff, kann das also nicht ändern, wenn's nicht klappt)

Selber umgehe ich diese Lücke, indem ich Key's für diverse Scripte übergebe, die ich includen will.
(z.B. ...?script.php?url=login)
PHP:
if ($url=="login"){
   include("login.php");
}

Wenn nun ein böser User dort etwas anderes als URL angibt, was Dein Script nicht abfragt, wird auch nix included -> kein fremder Code kann ausgeführt werden.

Werde mir auch mal das Sicherheits-Zeugs anschaun, ist bestimmt interessant.

MfG
Posti
 
Zurück