mysql_escape_string()

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

  • mysql_escape_string()

    ... mich beschäftigt derzeit erneut die frage wie ich die usereingaben in inputfeldern am besten absicher sodass bei dem darauffolgenden QUERY kein "böser code" in mySQL eingetragen werden kann, bzw. dementsprechen entschärft wird!

    ich habe hier ausgiebig gesucht, addslashes, htmlspecialchars, htmlentities und konsorten sind mir bestens vertraut, dennoch möchte ich eure meinung bzw tipp hören!

    bisher habe ich alle eingaben mit addshlashes und htmlentities vor dem QUERY behandelt => html in der datenbank, und bei der ausgabe stripslashes

    ... nun ist aber die vorgabe kein html in der Datenbank! wie sicher ich das ab, nur addslashes oder mysql_escape_string() scheint mir nicht sicher genug, wie macht ihr soetwas???

    bitte um rat,
    crisdoe

  • #2
    addslashes und mysql_escape_string sind das selbe. Das macht keinen Unterschied. Bei addslashes hast du den Vorteil, dass es seit php3 dabei ist. mysql_escape_string gibt es "erst" seit 4.0.3.
    Mit HTML kann man meines Wissens keine SQL Abfragen manipulieren.

    Du musst bei Strings lediglich Anführungszeichen aussen herum setzen und Anführungszeichen im eigentlichen String mit addslashes maskieren (falls die magic_quotes_gpc einstellung das nicht schon getan hat).
    Bei Zahlwerten solltest du vorher auch (int) benutzen, um sicherzugehen, dass die Eingabe wirklich eine Zahl ist..
    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

    © Harald Schmidt

    Kommentar


    • #3
      Unter umständen (wenn Du PHP >= 4.3.0 verwenden kannst) würde ich sogar string mysql_real_escape_string ( string unescaped_string [, resource link_identifier]) denn diese berücksichtigt sogar den für die Connection eingestellten Character Set ... damit denkst Du gleich noch in die Zukunft.

      Zudem werden hierbei % und _ nicht escaped (gilt auch für mysql_escape_string()) ... was Suchfunktionen vereinfacht.

      Ich persönlich denke immer man sollte die Funktionen verwenden die von einer Programmiersprache (od. Bibliothek) für eine spezielle Aufgabe zur Verfügung stellt und ziehe daher gerne Spezialisten einem Generalisten vor.
      carpe noctem

      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

      Kommentar


      • #4
        ... o.k, aber dennoch meine Frage:

        bin ich auf der sicheren seite wenn ich nur mysql_escape_string () vor dem QUERY auf die Variablen aus dem user-input anwende und htmlentities sowie stripslashes bei der ausgabe aus der datenbank?

        ... ist das genau so sicher wie addslashes und htmlentities beim eintragen in die datenbank?

        gruss, crisdoe

        Kommentar


        • #5
          Was bedeutet kein HTML in die Datenbank?
          Alles mit htmlentities oder suchst Du evt. strip_tags() ?
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            Was bedeutet kein HTML in die Datenbank?
            Alles mit htmlentities oder suchst Du evt. strip_tags() ?
            die datenbank sollte keine html codierten sonderzeichen enthalten, also z.B ü und nicht uuml;

            strip_tags wäre eigentlich das richtige, funktioniert aber nicht immer wie gewünscht, z.b bei fehlerhaften tags oder nicht geschlossenen...
            deshalb habe ich davon abstand genommen.

            ... bisher habe ich htmlentities genommen, so wurde alles wie z.b <script>... entschärft, jetzt, da htmlentities/htmlspecialchars für mich ausfällt gehen solche eingaben direkt in die datenbank.
            in der ausgabe dagegen möchte ich natürlich htmlentities anwenden...

            Kommentar


            • #7
              Ähm, wo ist denn das Problem ?
              Die Eingaben speicherst du unverändert (nur mit addslashes bzw. mysql_escape_string) maskieren.

              Bei der Ausgabe wendest du einfach htmlentities auf den Datenbankinhalt an. Stripslashes ist nur nötig, wenn magic_quotes_runtime aktiviert ist.
              [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
              [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
              [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

              © Harald Schmidt

              Kommentar


              • #8
                das war ja genau die frage! ich war mir nich sicher ob diese variante auch wirklich optimal ist. also beim eintragen addslashes, beim ausgeben htmlentities = sichere seite

                thx,
                crisdoe

                Kommentar


                • #9
                  Ja, damit bist du auf der sicheren Seite.
                  [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
                  [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
                  [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

                  © Harald Schmidt

                  Kommentar


                  • #10
                    i believe

                    gruss, crisdoe

                    Kommentar

                    Lädt...
                    X