MySQL-Injection in PHP verhindern

Eines der beliebtesten Mittel eines Angriffes auf eine Webpräsenz ist neben DDoS die mySQL-Injection. Dabei werden “unsichere” SQL Statements ausgenutzt um die Datenbank zu kompromittieren, oder um sich in eine Seite einzuloggen. Der Trick dahinter ist eigentlich nichts anderes, als das man über die richtigen Eingaben – und nein, ich schreibe diese nicht hier hin – in den Loginfeldern das SQL-Statement so weit verändert, dass es immer TRUE, also WAHR zurück gibt.

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);
?>
Werbung

iPhone 4 Case Aquatus

Über H.-Peter Pfeufer

Ich bin Webentwickler/ -programmierer aus Leidenschaft, WordPressbegeistert und ab und an auch mal ein netter Mensch.
Vor allen schreibe ich über alles was mit den Themen Webentwicklung/ -programmierung und WordPress zu tun hat. Nebenher auch mal einige Gedanken zu allgemeineren Themen.

Kategorie(n): PHP
Tags: , , , ,
Setze ein Lesezeichen auf den Permalink.

Eine Antwort auf MySQL-Injection in PHP verhindern

    Camma sagt:

    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.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

 

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>