kostenloser Webspace werbefrei: lima-city


Escapen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    seth93

    seth93 hat kostenlosen Webspace.

    Hallo,

    hab mehrere Fragen zum Escapen.

    Wenn man in Foren " oder ' nutzt, werden diese ja trotzdem angezeigt.
    Genauso Javascript und HTML.
    Wie geht das?
    Ich hab bisher htmlentities gefunden, aber das wandelt ja nur Zeichen um.
    Soll man das dann wieder dekodieren?
    Funktionieren dann die Codes wieder? Das möchte ich nämlich nicht.


    Addslashes oder mysql_real_escape_string?
    Was sollte man davon verwenden?
    Bei addslashes bleiben die Backshlashes ja auch nach dem Speichern.
    Aber wenn ich jetzt etwas aus der DB ausgebe, was vorher mit mysql_real_escape_string maskiert wurde,
    kann man ja Javascript-Code einspielen.



  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Du wirfst in deiner Frage gleich mehrere Dinge durcheinander, darum sag ich dir mal kurz wofür welche Funktion gedacht ist, denn das hat nicht unbedingt etwas mit der Ausgabe zu tun!

    htmlentities('<p>foo&bar</p>'); wandelt den string so um, dass er als Text ausgegeben wird, sprich keinen weiteren Absatz im HTML erzeugt, sondern als Text zu sehen ist, sprich er wandelt den Text in dieses Ergebnis um: &lt;p&gt;foo&amp;bar&lt;/p&gt;
    Diese funktion ist ausdrücklich dazu gedacht Codebeispiele auf der Website auszugeben, einen anderen Sinn hat sie nicht und wird z.B. in Foren genau zu diesem Zweck genutzt.

    addslashes("foo'bar"); wandelt den eingabetext in foo\'bar um und ist vor allem dazu gedacht Texte in Datenbanken abzuspeichern, falls es für diese keine eigenen Funktionen gibt!

    mysql_real_escape_string("foo'bar"); erzeugt eine Ausgabe, welche speziell alle Zeichen maskiert, die gefährlich für mysql sein können, das sind zum Beispiel die folgenden: ',",`,\
    Es gibt noch ein paar andere Zeichen, die durch diese Funktion maskiert werden, aber das sind die wichtigsten.

    So, nachdem ich dir nun gesagt habe was die Funktionen machen, will ich dir auch nicht vorenthalten, wie und vor allem wann du sie benutzen sollst, denn das ist vom Kontext, in dem du sie benutzt abhängig.
    Jedesmal wenn du etwas in einer mysql-Datenbank abspeichern willst solltest du die Eingabe mit mysql_real_escape_string maskieren, der string wird dann so maskiert, dass er der Datenbank nicht mehr gefährlich wird, sprich zum Beispiel den query umschreibt, oder ähnliches, wenn du die Daten dann wieder aus der Datenbank ausliest, bekommst du den string unmaskiert wieder.

    Wenn du eine Ausgabe von Code in das HTML der website schreiben willst, so solltest du diesen mit htmlentities maskieren, ansonsten wird HTML-Code ausgegeben, statt dem Code als Text.

    Für addslashes kenne ich keine guten Beispiele, da es wie gesagt als Ersatz für Datenbankeintäge gedacht ist und das einzige wo es noch von Bedeutung ist, ist bei dem Eingang von GET, POST, COOKIE etc. aber solange magic_quotes_gpc auf on ist, wird dies automatisch gemacht und es ist meistens, so auch bei lima-city auf on.

    Zum Schluss will ich dir nochmal einen kleinen aber feinen und guten bericht zum Thema Kontextwechsel empfehlen, denn darum geht es eigentlich immer, wenn du solche Funktionen brauchst.
    "Kontextwechsel erkennen und behandeln" auf de.selfhtml.org

    Beitrag zuletzt geändert: 19.5.2010 12:56:39 von nemoinho
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!