Ankündigung

Einklappen
Keine Ankündigung bisher.

html eingabe unterbinden

Einklappen

Neue Werbung 2019

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

  • html eingabe unterbinden

    hi,

    ich hab folgendes Prolbem

    Meine User können unter Usertext einen Text eingeben. Ein user hat aber einen Metatag reingeschrieben der direkt auf seine HP umleitet.

    Ausgegeben wird der Usertext ganz gewöhnlich mit echo.

    Wie kann man am sinvollsten die ausgaben von html verhindern?

  • #2
    je nachdem, was dein Anspruch von "am Sinvollsten" ist.

    Am einfachsten wäre die Verwendung von html_entity_decode. Da wird dann im Zweifelsfall einfach knall hart dessen angezeigt, aber nix ausgeführt.
    Nicht jeder Fehler ist ein Bug.

    Kommentar


    • #3
      Um das Problem zu umgehen gibt es BBCode. Vorher werden alle <Tags> mittels
      http://de.php.net/strip_tags
      entfernt, danach erst läuft der BBCode-Parser drüber und ersetzt zahnlose [b] durch [b]. Wenn der Tag nicht erkannt wird, bleibt er stehen. Da es sich um [eckige] Klammern und nicht um <spitze> Klammern handelt, hat er keine Extra-Funktionalität mehr in der dargestellten HTML-Seite.

      Problem gelöst.

      Kommentar


      • #4
        Ansonsten ist htmlentities() zu empfehlen, nicht html_entity_decode() wie fälschlicherweise von Crunch empfohlen (denn dann bräuchte der Angreifer ja nur &lt;script&gt; etc. schreiben)
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          Jeglicher DB-Insert wird bei mir mit folgender Funktion in die DB eingetragen:

          PHP-Code:
              public static function db_insert_data($table$cols$data$encapse TRUE)    {
                  if(
          $encapse)    {
                      
          $data htmlspecialchars($data);
                  }
                  
          $sql "INSERT INTO ".$table." (".$cols.") VALUES (".$data.");";
                  
          $query = @mysql_query($sql)
                      or die(
          Mysql::report_error("Insert: ".mysql_error()."\nQuery: ".$sql));
                  return(!
          $query false true);
              } 
          Schaus dir mal an und les hier mal rein:

          http://de.php.net/manual/de/function...ecialchars.php
          http://de.php.net/manual/de/function.htmlentities.php
          Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
          Mark Twain

          Kommentar


          • #6
            Zitat von nikosch77
            Ansonsten ist htmlentities() zu empfehlen, nicht html_entity_decode() wie fälschlicherweise von Crunch empfohlen (denn dann bräuchte der Angreifer ja nur &lt;script&gt; etc. schreiben)
            Stimmt, war falschrum ^^
            Nicht jeder Fehler ist ein Bug.

            Kommentar


            • #7
              return(!$query ? false : true);
              Ist übrigens für einen INSERT das selbe wie
              Code:
              return $query
              Ich würde trotzdem
              Code:
              return $query and mysql_affected_rows() == 1
              verwenden.

              Kommentar


              • #8
                Wie meinst du das mit "and"? Und was hab ich hier davon, wenn ich vergleiche ob die betroffenen Datensätze == 1 sind? Versteh das grad net
                Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
                Mark Twain

                Kommentar


                • #9
                  Er würde nur true zurückgeben wenn $query true ist und von der mysql_query nur eine Zeile in der Datenbank betroffen ist.

                  Hoffe ich habs richtig verstanden...

                  Kommentar


                  • #10
                    Hmm Danke erstmal für euere Zahlreichen Antworten.

                    Ich möchte aber, das der Text zwar angezeigt wird also das test ausgegeben wird, test aber nicht fett geschrieben wird also die funktion nicht ausgeführt wird

                    Kommentar


                    • #11
                      htmlentities()
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar


                      • #12
                        Zitat von webbi
                        Er würde nur true zurückgeben wenn $query true ist und von der mysql_query nur eine Zeile in der Datenbank betroffen ist.

                        Hoffe ich habs richtig verstanden...
                        Hast du

                        Kommentar

                        Lädt...
                        X