htmlentites bei URLs

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

  • htmlentites bei URLs

    Hab ne kleine Frage

    Ich bearbeite alle meine Einträge die ich in der DB speicher mit strip_tags und mit htmlentities. Darunter befindet sich z.B auch mal ne URL die z.B so aussieht

    http://streaming.tagesschau.de/bb/redirect.lsc?rewrite=http://www.tagesschau.de/export/podcast-rss/tagesschau&content=content&media=mp3
    nachdem bearbeiten mit htmlentities hat er mir ja die & in & a m p ; (ohne leerzeichen) gewandelt

    So wenn ich mir das ganze aber aus der Datenbank hole um es später z.B an SimplePie (XML Klasse) zu übergeben, erhalte ich ja die URL mit den & a m p ; (ohne leerzeichen)

    Wenn ich diese als ZielURL nehme, erhalte ich ja kein Ergebnis weil sie nicht existiert.

    Eigentlich könnte ich die URL mit html_entity_decode wieder zurückwandeln, dass aber ja keinen Sinn macht, weil dann dort auf der Seite wieder JS Code oder so ausgeführt werden kann.

    Hab ich hier nen kleinen denkfehler oder gibts da ne einfache lösung für?

    Danke

    P.S: Auf der anderen Seite kann ja kein schadhafter Code ausgegeben werden, solang ich keine Ausgabe mache. Wenn die Klasse nur prüft ob die URL exisitiert würde also html_entity_decode doch Sinn ergeben oder?
    Zuletzt geändert von Sebastian.J; 25.11.2007, 12:33.

  • #2
    Ich denke schon der erste Schritt mit htmlentities greift an der falschen Stelle. Wenn du du Felder hast in denen tatsächlich nur die Url steht solltest du diese z.B. mit filter validieren (ein Anfrage ob sie auch existiert ist nicht unbedingt sinnvoll) und dann unbearbeitet in die Datenbank schreiben.
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Kommentar


    • #3
      Original geschrieben von tontechniker
      Ich denke schon der erste Schritt mit htmlentities greift an der falschen Stelle. Wenn du du Felder hast in denen tatsächlich nur die Url steht solltest du diese z.B. mit filter validieren (ein Anfrage ob sie auch existiert ist nicht unbedingt sinnvoll) und dann unbearbeitet in die Datenbank schreiben.
      Also erstmal danke für die filter Funktionen, kann man immer gut gebrauchen.

      Also wenn ich dich richtig verstanden habe, meinst du das ich prüfen soll ob es sich in dem Feld um eine URL handelt. Das kann ich ja machen, allerdings gibt er mir z.B diese URL auch als normale URL aus

      PHP-Code:
      filter_var('http://www.example.com?test=<script>alert(\'huhu\')</script>'FILTER_VALIDATE_URL); 
      Weil es sich ja auch um ne URL handelt.

      Aber das problem hat sich erledigt weil ich bei Ausgabe der URL ja meine URL mit htmlentities und strip_tags absichere, damit kein JS ausgeführt werden kann.

      Wenn ich dir richtige URL brauche um sie später mit SimplePie auszuführen, kann ich ruhig die URL mit html_entity_decode() an SimplePie übergeben

      http://www.example.com?test=<script>alert(\'huhu\')</script>

      denn es findet ja keine Ausgabe statt.

      Danke aber trotzdem (Wenn ich mich irgendwo vertan habe mit der erklärung, immer her damit)

      Kommentar


      • #4
        Weil es sich ja auch um ne URL handelt.
        Nach url_encode ist die Url ja auch gültig.
        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

        Kommentar

        Lädt...
        X