Honda: magic_quotes = ON ... und Sicherheit

Hallo,

haltet Ihr diese Datenbankanfrage für sicher?

Prämisse: magic_quotes_gpc = ON !

$user = trim($_POST[username]);
$pass = trim($_POST[password]);

$sql_user =mysql_query("SELECT ID FROM User WHERE (Nickname like '$user') AND (Password = '$pass')");

Ich weiss, dass es auch "mysql_real_escape_string" gibt, jedoch würde ich mir gerne die Tatsache zu Nutze machen, dass bei mir die magic_quotes auf "ON" gestellt sind. Ansonsten müsste ich jedesmal stripslashes(); verwenden, was die magic_quotes auf (ON) ja völlig überflüssig macht.

Sofern diese Abfrage nicht sicher sein sollte, was könnte hier passieren?

Danke & Merci,
Honda

  1. echo $begrüßung;

    Prämisse: magic_quotes_gpc = ON !

    $user = trim($_POST[username]);
    $pass = trim($_POST[password]);

    $sql_user =mysql_query("SELECT ID FROM User WHERE (Nickname like '$user') AND (Password = '$pass')");

    haltet Ihr diese Datenbankanfrage für sicher?

    Ja, sie ist sicher ... verbesserungswürdig.

    Usernamen mit like zu vergleichen ist nicht besonders clever. Was ist, wenn jemand % eingibt? Dann passt das auf alle User. Irgendwer wird dann schon noch ein unsicheres Passwort haben ...
    Ich denke nicht, dass es sinnvoll ist, die Auswirkungen von Vertippern automatisch lindern zu wollen, wenn sich jemand vertippt hat er halt Pech gehabt.

    Ich weiss, dass es auch "mysql_real_escape_string" gibt, jedoch würde ich mir gerne die Tatsache zu Nutze machen, dass bei mir die magic_quotes auf "ON" gestellt sind. Ansonsten müsste ich jedesmal stripslashes(); verwenden, was die magic_quotes auf (ON) ja völlig überflüssig macht.

    Magic Quotes sind in der Tat ein überflüssiges Feature. Pläne sehen vor, dass diese in PHP 6 nicht mehr enthalten sein werden.

    Zum einen ist nicht auf jedem System sichergestellt, dass sie eingeschaltet sind. Zum anderen stören sie, wenn Daten gar nicht oder nicht direkt in die Datenbank geschrieben werden sollen, beispielsweise wenn Formulardaten in einem Affenformular mehrere Runden drehen, bevor sie als o.k. befunden werden. Außerdem sind die von Magic-Quotes maskierten Zeichen sehr allgemein gehalten und damit nicht genau auf die Belange der verwendeten Datenbank zugeschnitten.

    "Jedesmal stripslashes() verwenden" fasse ich so auf, dass die stripslashes() verteilt in deinem Script herumliegen. Verwende diese Funktion einmalig am Scriptanfang und die stripslashes()-Probleme sind erledigt.

    echo "$verabschiedung $name";

    1. hi,

      "Jedesmal stripslashes() verwenden" fasse ich so auf, dass die stripslashes() verteilt in deinem Script herumliegen. Verwende diese Funktion einmalig am Scriptanfang und die stripslashes()-Probleme sind erledigt.

      Oder konfiguriere dir die Kiste gleich so, dass das Problem nicht mehr besteht - magic_quotes_gpc ist ja bspw. auch in einer .htaccess konfigurierbar.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
    2. Hallo,

      Usernamen mit like zu vergleichen ist nicht besonders clever. Was ist, wenn jemand % eingibt? Dann passt das auf alle User. Irgendwer wird dann schon noch ein unsicheres Passwort haben ...

      Danke, das ist ein guter Einwand,.. eigentlich hatte ich dies ursprünglich deshalb angedacht, um die Groß- und Kleinschreibfehler zu eliminieren.

      Gibt es in MySQL eine andere möglichkeit ausser LIKE dies zu ermöglichen?

      Grüsse,
      Honda

      1. hi,

        Danke, das ist ein guter Einwand,.. eigentlich hatte ich dies ursprünglich deshalb angedacht, um die Groß- und Kleinschreibfehler zu eliminieren.

        Gibt es in MySQL eine andere möglichkeit ausser LIKE dies zu ermöglichen?

        Ja, =

        (MySQL behandelt die TEXT-Spaltentypen _per default_ case-insensitive - wenn du es andersherum haben wolltest, dann müsstest du es extra angeben.)

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }