Verbindung mit mysql_real_escape_string prüfen

solala123

Erfahrenes Mitglied
Hallo,
ich hatte bisher eine einfache verbindung zur Datenbank erstell aus Beispielen aus dem Netz.
Darauf hin, wurde ich von Euch darauf hingewiesen, das die Verbindung zur Datenbank unsicher sei.
Desweiteren habe ich mich jetzt einmal mit
mysql_real_escape_string
beschäftigt und folgenden Code erstellt, bzw. gefunden und meine Daten eingetragen.
Eine Verbindung zur DB wird auch hergestellt.

Könnt Ihr mal darüber schauen ob der jetzige Code sicherer ist oder was man noch verbessern kann.

Code:
<?php
// Verbindung herstellen
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
    OR die(mysql_error());

// Anfrage erstellen
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));

mysql_select_db("DBxxxxxxxx") or die ("Die Datenbank existiert nicht.");
?>

freundliche Grüße
Rainer
 
Grundsätzlich ist es sicherer, alle Eingaben zu escapen (z.B. mittels mysql_real_escape_string() oder Regulären Ausdrücken), die über $_GET, $_POST, $_FILES, $_COOKIES, $_SESSION oder bei Konsolen-Programmen $argv rein kommen. Daher hast du das richtig gemacht. Was aber in einem produktiven Script nichts verloren hat, und nur zum Testen eingesetzt werden sollte, ist, die(mysql_error()). Versuche andere Möglichkeiten zu finden, den Fehler im Script nicht für jeden sichtbar zu machen. Das gibt Angreifern die Chance, Informationen über die Strukur deines Systems herauszfinden. Besser wäre es, mit einem Logging zu arbeiten und dem Benutzer nur eine Meldung à la "Hat nicht funktioniert" zu präsentieren.

Was interessiert es den Benutzer, warum es nicht funktioniert hat? Viele können damit nix anfangen, einem Hacker gibt sowas aber nützliche Infos. In diesem Falle ist Security-By-Obscurity schon mal angebracht.

Hier ein Tutorial über Logging und Debugging (schamlose Eigenwerbung): http://www.tutorials.de/content/1126-fehlersuche-php-scripts.html

Kapitel 2 und 3 geben Tipps für Logging.
 
Zuletzt bearbeitet von einem Moderator:
Und falls du auch allgemeine Verbesserungsvorschläge suchst:
Die ganzen mysql_ - Funktionen nicht mehr verwenden.
Wenn du grad erst beim Lernen bist, bring dir nichts bei, was schon zur Vergangenheit gehört.

Stichwort PDO oder Mysqli
 
Zurück