Dies funktioniert natürlich nur, wenn man keine Vorkehrungen dagegen getroffen hat. Die Funktion mysql_real_escape_string(); ist schon mal ein recht guter Ansatz, denn dadurch werden alle “ und ‚ im Statement maskiert und können so schon mal nicht mehr als Teil des eigentlichen Statements gelten.

Um nun wirklich auf Nummer sicher zu gehen empfiehlt sich zusätzlich der Einsatz von sprintf(); Ich werde hier mal ein kleines Beispiel ohne größere Kommentare hinterlassen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
/**
 * Magic Quotes aushebeln, die stören nur
 * und sind eh bald hinfällig :-)
 */

if(get_magic_quotes_gpc()) {
    $wert_1     = stripslashes($wert_1);
    $wert_2     = stripslashes($wert_2);
    $wert_3     = stripslashes($wert_3);
}

/**
 * mySQL-Query zusammenbasteln
 */

$query  = sprintf("
        INSERT INTO
            tabelle
        SET
            key_1       = '%s',
            key_2       = '%s',
            key_3       = '%s',
        "
,
        mysql_real_escape_string($wert_1),
        mysql_real_escape_string($wert_2),
        mysql_real_escape_string($wert_3)
);

/**
 * Query an die Datenbank übermitteln
 */

$result = $sql->query($query);
?>
Artikel / Seite weiterempfehlen

Eine Meinung zu “MySQL-Injection in PHP verhindern

  1. Besser als diese Lösung ist das verwenden der mysqli Klasse welche alle Sicherheitschecks direkt eingebaut und dezidiert für den entsprechend erwarteten Wert auswerten kann.

Schreibe einen Kommentar

Ihre Email-Adresse wird nicht veröffentlicht. Pflichtfelder sind durch * markiert.

Sie können folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>