mysql_escape_string() oder htmlentities() bei DB-Einträgen

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

  • mysql_escape_string() oder htmlentities() bei DB-Einträgen

    Hallo Forum,

    da programmiert man schon ewig vor sich hin, und merkt, man machts mal so oder so...

    Ich stehe gerade vor der Frage, was bei Datenbankeinträgen eigentlich mehr Sinn macht.

    mysql_escape_string() oder htmlentities() ?

    Trage ich lieber die ganzen Sonderzeichen mit mysql_escape_string() als solche in die Datenbank ein, und kann dann auch dort alles normal lesen? Oder verursachen ' oder " bei anderen Datenbankaktionen irgendwelche Probleme, an die ich jetzt nicht denke?

    Oder speicher ich doch alles mit htmlentities() ab, dann laufe ich auch nicht Gefahr, dass mir irgendwann mal ein Script wg. Hochkommata um die Ohren fliegt, muss mich ggfs später wieder drum kümmern, wenn ich Daten in Formulare lade?

    Wenn man die Manuals liest, erfährt man zwar immer die Funktionen, aber selten, was in welchem Fall Vorteile gegenüber einer anderen Methode bietet, die wie auch in meinem Fall, zwar den gleichen Fehler vermeiden sollen, aber eigentlich sehr unterschiedlich vom Ansatz sind.

    Würde mich sehr freuen, mal ein Meinungsbild zu sehen,
    wenn es KO-Kriterien für eine der beiden Funktionen gibt, wär ich auch sehr neugierig drauf...

    n schönen Sommertag!
    ...hell is just a name, not the devil...

  • #2
    Bei großen Insert ( massig viel Text ) benutze ich mysql_escape_string(). Wenn dann noch andere User Texte eigeben können, vorher und vor allem zusätzlich htmlentities()
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

    Kommentar


    • #3
      Re: mysql_escape_string() oder htmlentities() bei DB-Einträgen

      mysql_escape_string unbedingt zum absichern des einfügens in die DB.

      htmlentities gegebenenfalls zur ausgabe.

      wenn es KO-Kriterien für eine der beiden Funktionen gibt, wär ich auch sehr neugierig drauf...
      "sehr neugierige" leute sollten die suchfunktion benutzen, weil wir uns über das thema hier wirklich schon bis zum erbrechen einen abdiskutiert haben!
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Also mysql_escapes_string() würde ich immer einsetzen. Wenn man es aus der Tabelle ausließt würde ich dann stripslashes() benutzen. Zusätzlich würde ich noch, bevor die Daten in der Tabelle gespeichert werden, mit der Funktion strip_tags() rübergehen. htmlentities würde ich nur dann einsetzen, wenn der Inhalt auch als HTML angezeigt werden soll. Ausser in Eingabefelder der Formularen.

        cheers
        Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
        PHP Sicherheit
        PHPUnit[1-2]
        Professionelle Softwareentwicklung mit PHP 5
        Professionelle PHP 5-Programmierung

        Kommentar


        • #5
          Original geschrieben von schlimmerfinger
          Also mysql_escapes_string() würde ich immer einsetzen. Wenn man es aus der Tabelle ausließt würde ich dann stripslashes() benutzen.
          letzteres natürlich nur, wenn die daten vorher mit magic_quotes on übergeben wurden.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Original geschrieben von wahsaga
            letzteres natürlich nur, wenn die daten vorher mit magic_quotes on übergeben wurden.
            hmm... Dachte immer addslashes() und mysql_escape_string() sind identisch oder etwa nicht?
            Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
            PHP Sicherheit
            PHPUnit[1-2]
            Professionelle Softwareentwicklung mit PHP 5
            Professionelle PHP 5-Programmierung

            Kommentar


            • #7
              Mal 'ne andere Variante ... wenn's in Deiner PHP-Version implementiert ist, dann solltest Du auch mit Hinblick auf zukünftige MySQL Versionen mysql_real_escape_string() verwenden ... dort werden dann auch schön CharSets verwendet ...

              Ganz gleich sind auch mysql_escape_string() und addslashes() wohl nicht ... irgendwie unterscheidet sich der Pool an escapeden Zeichen ... !
              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


              • #8
                Original geschrieben von schlimmerfinger
                hmm... Dachte immer addslashes() und mysql_escape_string() sind identisch oder etwa nicht?
                nein.

                mysql_escape_string ist extra dafür gedacht, alle potentiell für eine mysql-DB gefährlichen daten zu entschärfen, während addslashes nur bestimmte sonderzeichen durch einen vorangestellten backslash escaped.

                es läuft zwar im großen und ganzen meist auf das gleiche hinaus - aber warum sich mit einer schlechteren lösung zufriedengeben, wenn es eine extra dafür vorgesehene funktion gibt (die noch darüber hinaus in zukünftigen versionen sicher die notwendigen änderungen automatisch erfahren wird, falls welche erforderlich werden).

                aber wie gesagt, das wurde hier wirklich alles schon x-mal ausführlich durchdiskutiert.
                vor weiteren fragen dazu also bitte selber suchen.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Hallo Forum,

                  vielen Dank für den Input. Sehr fruchtbar, jetzt weiß ich , wie es weiter geht.


                  Original geschrieben von wahsaga
                  aber wie gesagt, das wurde hier wirklich alles schon x-mal ausführlich durchdiskutiert.
                  vor weiteren fragen dazu also bitte selber suchen.
                  kleiner Kommentar dazu: Mit der Suche ist das immer so eine Sache. Wenn man vorher genau wüßte, was man nicht weiß, müßte man wahrscheinlich auch gar nicht posten - Ich habe selbstverständlich vorher geguckt, aber nicht das passende gefunden. Super fände ich von Dir, wenn Du einen Hinweis auf eine der X-Mal besprochenen Diskussionen geben könntest. Oder einen Tip, wie man am besten nach einem solchem Sachverhalt suchen kann.

                  n schönen Tag!
                  ...hell is just a name, not the devil...

                  Kommentar

                  Lädt...
                  X