magic_quotes, wo sind sie hin?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • magic_quotes, wo sind sie hin?

    Servus,

    ja, ich weiß dass das nicht der erste Thread mit dieser Überschrift ist, hab aber gerade eine kleine Denkblockade.

    Will meine DB vor Injections schützen, und habe dazu mal ein wenig mit mysql_escape_string und magic_quotes_gpc herumgespielt.

    Im folgendem Code gibt es ein kleines Formular, das Daten an sich selbst schickt, die Daten ausgibt, sie dann in eine DB schreibt, Query wird ausgegeben, und gleich wieder ausliest.

    So werden von magic_quotes nach Eingabe von " oder ' Slashes eingefügt, aber welche Funktion löscht sie beim Schreiben in die DB?

    Denn in der DB sind die Slashes nicht mehr da, und auch nach der Ausgabe nicht.

    Ist dies auch eine PHP Funktion die deaktiviert werden könnte, oder ist das von mysql aus?


    Hier eine Probeausgabe :

    Ausgabe der Roh-POST-Daten :

    A \" B \' C \\ D

    Ausagbe der Query :

    Update test set name= ' A \" B \' C \\ D' WHERE superID=1

    Ausgabe der Daten aus DB :

    1 A " B ' C \ D


    PHP-Code:
    <?PHP

    if($_POST['submit'])
    {
    echo 
    "Ausgabe der Roh-POST-Daten :<br><br>";
    echo 
    $_POST['name']."<br><hr>";

        
    //-- Schreiben in DB

    //-- DB Verbindung aufbauen, Daten schreiben
            
    mysql_connect("localhost","test","test");
            
    mysql_select_db("test");
            
    $sql="Update test set name=    '".$_POST['name']."' WHERE superID=1";
            
            echo 
    "Ausagbe der Query :<br><br>".$sql."<br><hr>";
            
    $query=@mysql_query($sql) or die ("Fehler beim Verbindungsaufbau Test : ".mysql_error());

    //--Auslesen der Daten aus der DB

            
    $sql="Select id, name from test";
            
    $query=@mysql_query($sql) or die ("Fehler beim Verbindungsaufbau Test : ".mysql_error());
            
            echo 
    "Ausgabe der Daten aus DB :<br><br>";
            while(
    $result=mysql_fetch_object($query))
                {
                    echo 
    $result->name."<br><hr>";
                }

    }
        
    ?>

    <form action="nummeric.php" method="post" name="form1" target="_parent">
      <p> 
        <input name="name" type="text" id="name">
        Testeingabe</p>
      <p>
        <input type="submit" name="submit" value="Abschicken">
      </p>
    </form>
    Zuletzt geändert von ExInfernis; 26.01.2005, 11:11.

  • #2
    weißt du denn eigentlich warum man solche Zeichen escaped? wenn du mit ja beantworten kannst dann war deine Frage überflüssig, sonst RTFM

    Kommentar


    • #3
      Ich denke ja, SQL-Injection, wa?

      OK, hab meinen Stuhl umgestellt, saß wohl auf der Leitung, ;-)!

      Die maskierten Zeichen werden also beim Eintrag in die DB automatisch demaskiert.

      Nun aber meine Frage, kann das Deaktiviert werden?

      Kommentar


      • #4
        wozu?
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Ich hab das nicht vor, würde aber gerne wissen ob das generell möglich ist, und man das daher überprüfen sollte.

          Wenn nicht, auch recht, wieder ein Punkt abgehackt.

          Kommentar


          • #6
            schau dir ini_set, ini_get an

            Kommentar


            • #7
              OK, nun hab ich es.

              Wenn magic_quotes= ON benutze ich stripslashes() um die Maskierung der POST- und GET-Daten zu entfernen und schreibe dann die Daten immer mit mysql_escape_string() in die DB.
              Damit umgehe ich alle Probs.

              Tja, manche brauchen eben länger.

              Bitte closen!

              Kommentar

              Lädt...
              X