pc-world: Änderungen m. mysql_real_escape_string() beim Anz. rückg. machen

Der Betreff nochmal ohne Abkürzungen :-): Änderungen mit mysql_real_escape_string() beim Anzeigen rückgängig machen

Wie kann ich die Änderungen, die man aus Sicherheitsgründen mit mysql_real_escape_string() beim Schreiben in die Tabelle macht, wieder vor dem Anzeigen rückgängig machen?

  1. Hello,

    Wie kann ich die Änderungen, die man aus Sicherheitsgründen mit mysql_real_escape_string() beim Schreiben in die Tabelle macht, wieder vor dem Anzeigen rückgängig machen?

    was für Änderungen sind das, deiner Meinung nach?

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    "I wish it need not have happened in my time" - "So do I, and so do all who live to see such times. But that is not for them to decide. All we have to decide is what to do with the time that is given us."  --  J.R.R. Tolkien: "The Lord Of The Rings: The Fellowship Of The Ring"
    1. was für Änderungen sind das, deiner Meinung nach?

      Z. B. wird ein Apostroph zu "'" (ohne die "").

      Und die möchte ich vor dem Anzeigen alle wieder rückgängig gemacht bekommen.

      1. Hi,

        Und die möchte ich vor dem Anzeigen alle wieder rückgängig gemacht bekommen.

        setze die Maskierung sinnvoll ein - nämlich nur bei der Übergabe an das SQL-Statement. Es ist schlechter Stil, Daten, die in verschiedenem Kontext gebraucht werden, zu verändern.

        freundliche Grüße
        Ingo

        1. setze die Maskierung sinnvoll ein - nämlich nur bei der Übergabe an das SQL-Statement. Es ist schlechter Stil, Daten, die in verschiedenem Kontext gebraucht werden, zu verändern.

          Also die Daten kommen ja von einer MySQL-Datenbank, und diese wurden (aus Sicherheitsgründen) vorher mit der Methode mysql_real_escape_string() maskiert.

          Aber wenn ich jetzt Daten aus dieser Datenbank im Browser anzeigen will, möchte ich, dass die Maskierung "aufgehoben" ist.

          [Wenn es euch hilft: Ich bastel gerade an einem Kommentarsystem rum! :-)]

          1. Hallo

            setze die Maskierung sinnvoll ein - nämlich nur bei der Übergabe an das SQL-Statement. Es ist schlechter Stil, Daten, die in verschiedenem Kontext gebraucht werden, zu verändern.

            Also die Daten kommen ja von einer MySQL-Datenbank, und diese wurden (aus Sicherheitsgründen) vorher mit der Methode mysql_real_escape_string() maskiert.

            Jup, recht so.

            Aber wenn ich jetzt Daten aus dieser Datenbank im Browser anzeigen will, möchte ich, dass die Maskierung "aufgehoben" ist.

            Ist sie doch, das wird ganz automatisch von der DB-Engine erledigt. Du hast das offensichtlich noch gar nicht probiert, sonst wäre dir das nicht entgangen. :-)

            Tschö, Auge

            --
            Die deutschen Interessen werden am Liechtenstein verteidigt.
            Veranstaltungsdatenbank Vdb 0.2
            1. Hallo

              setze die Maskierung sinnvoll ein - nämlich nur bei der Übergabe an das SQL-Statement. Es ist schlechter Stil, Daten, die in verschiedenem Kontext gebraucht werden, zu verändern.

              Also die Daten kommen ja von einer MySQL-Datenbank, und diese wurden (aus Sicherheitsgründen) vorher mit der Methode mysql_real_escape_string() maskiert.

              Jup, recht so.

              Aber wenn ich jetzt Daten aus dieser Datenbank im Browser anzeigen will, möchte ich, dass die Maskierung "aufgehoben" ist.

              Ist sie doch, das wird ganz automatisch von der DB-Engine erledigt. Du hast das offensichtlich noch gar nicht probiert, sonst wäre dir das nicht entgangen. :-)

              Tschö, Auge

              Doch, ich hab es ausprobiert.

              Ich gebe in meine textarea z. B. 'd' ein, und bekomme dann 'd' zurück, wenn ich die Daten wieder auf der Homepage anzeige.

              1. Hello,

                Ich gebe in meine textarea z. B. 'd' ein, und bekomme dann 'd' zurück, wenn ich die Daten wieder auf der Homepage anzeige.

                ist auf deinem Server vielleicht magic_quotes aktiviert?

                MfG
                Rouven

                --
                -------------------
                sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
                Vegetarier essen meinem Essen das Essen weg.
                1. Danke an alle!

                  Ich habe "php_flag magic_quotes_gpc Off" in die Datei ".htaccess" geschrieben, jetzt funktioniert alles wie gewünscht.

              2. Hallo

                Also die Daten kommen ja von einer MySQL-Datenbank, und diese wurden (aus Sicherheitsgründen) vorher mit der Methode mysql_real_escape_string() maskiert.

                Aber wenn ich jetzt Daten aus dieser Datenbank im Browser anzeigen will, möchte ich, dass die Maskierung "aufgehoben" ist.

                Ist sie doch, das wird ganz automatisch von der DB-Engine erledigt.

                Doch, ich hab es ausprobiert.

                Ich gebe in meine textarea z. B. 'd' ein, und bekomme dann 'd' zurück, wenn ich die Daten wieder auf der Homepage anzeige.

                hast du phpMyAdmin oder ähnliches zur Verfügung? Wenn ja, sind die Backslashes im Feld mit dem String enthalten? Ist dem so, folge dedlfix' Links. Das _dürfte_ dein Problem erklären und mit den dortigen Angaben könntest du es beheben.

                Wenn das _nicht_ hilft, passiert zwischen der Übergabe der Daten und dem Speichern derselben in der DB irgendetwas anderes, was nicht passieren soll. Um das zu ergründen brauchen wir aber den relevanten Quelltext des Skripts zwischen diesen beiden Punkten.

                Tschö, Auge

                --
                Die deutschen Interessen werden am Liechtenstein verteidigt.
                Veranstaltungsdatenbank Vdb 0.2
      2. echo $begrüßung;

        was für Änderungen sind das, deiner Meinung nach?
        Z. B. wird ein Apostroph zu "'" (ohne die "").
        Und die möchte ich vor dem Anzeigen alle wieder rückgängig gemacht bekommen.

        Maskierungen sind eine Art Transportsicherung auf dem Weg zum Datenbanksystem, damit Daten und Anweisungsbestandteile voneinander unterschieden werden können. Aus der Datenbank kommen die Daten in ursprünglicher Form, ohne dass sie in einem SQL-Statementtext eingebettet sind.

        Wenn du Daten mit Maskierungen zurückbekommst, hast du nicht genügend Fehlersuche betrieben. Die Daten werden höchstwahrscheinlich bereits maskiert an dein Script geliefert. Grund wäre dann das PHP-Feature namens Magic Quotes. Unter Disabling Magic Quotes steht, wie man die Dinger los wird.

        echo "$verabschiedung $name";

  2. Hello,

    Wie kann ich die Änderungen, die man aus Sicherheitsgründen mit mysql_real_escape_string() beim Schreiben in die Tabelle macht, wieder vor dem Anzeigen rückgängig machen?

    Die stehen gar nicht drin in der Datenbank.
    Die Maskeierungen sind nur für die Textschnittstelle der Datenbank notwendig und werden von dieser beim Übertragen in den Buffer bereits wieder entfernt bzw. verwinden durch die Interpretation des Textstrings "von alleine".

    Wenn Du die Daten aus der DB wieder holst, sind es bereits wieder Rohdaten und müssen dann nur für den jeweiligen Kontext, in dem sie ausgegebn werden sollen, vorbereitet werden, also z.B. mit htmlspecialchars() für die Ausgabe im HTML-Kontext.

    Ein harzliches Glückauf

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de