HTML Code bei Eingabe erlauben

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

  • HTML Code bei Eingabe erlauben

    hallo,

    wahrscheinlich werden mich einige steinigen wollen für diese idee, ist aber notwendig bei mir.

    ich möchte ein formular, wo der user einen html code eingeben kann. dieser wird in der db gespeichert und an anderer stelle wieder ausgegeben (als htmlcode, also ohne htmlspecialchars etc.)

    das wär ja nicht so schwer, wenn nur meine ganzen sicherheitsbedenken nicht wären. was für unsicherheitsfaktoren gibt es denn?? wenn ich php code eingebe, wird dieser ja ganz einfach ausgegeben und nicht ausgeführt. gibt es sonst noch dinge, auf die ich achten muss??

    Ach ja, mysql_real_escape_string werde ich schon verwenden.
    Zuletzt geändert von JimDaniels; 22.03.2007, 10:05.

  • #2
    Re: HTML Code bei Eingabe erlauben

    Original geschrieben von JimDaniels
    das wär ja nicht so schwer, wenn nur meine ganzen sicherheitsbedenken nicht wären. was für unsicherheitsfaktoren gibt es denn??
    Den hier:
    ich möchte ein formular, wo der user einen html code eingeben kann.
    Da du das nicht genauer spezifiert hast, darf der Nutzer also alles mögliche eingeben.

    Ich könnte also bspw. per Iframe fremde Inhalte einbinden, oder auch Javascript, womit ich dann bspw. die Zieladresse eines Loginformulares auf deiner Seite auf ein Script auf meinem Server ändere, so dass ich die Daten deiner Nutzer ausspähen kann, etc. pp.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Na schön, das sind doch schon mal 2 dinge, ich fange also einfach die tags <script> und <frame> oder <iframe> ab. sollte doch reichen, oder??

      sonst noch etwas, mir macht das ganze mit php ein bißchen sorgen. werden die befehle wirklich nicht ausgeführt, wenn man sie einfach so eingibt, oder gibt es nicht doch eine möglichkeit, wie der user es fertig bringt, das die befehle als php interpretiert werden.

      Kommentar


      • #4
        @Jim: Nimm strip_tags und erlaube einfach nur Tags wie z.B. b, strong, p, a, i, u, span, blockqoute, ul, li, div, img, table, tr, td, th, tbody
        Das sollte ausreichen.
        Sunshine CMS
        BannerAdManagement
        Borlabs - because we make IT easier
        Formulargenerator [color=red]Neu![/color]
        Herkunftsstatistik [color=red]Neu![/color]

        Kommentar


        • #5
          Original geschrieben von JimDaniels
          Na schön, das sind doch schon mal 2 dinge, ich fange also einfach die tags <script> und <frame> oder <iframe> ab. sollte doch reichen, oder??
          Nein.
          sonst noch etwas, mir macht das ganze mit php ein bißchen sorgen. werden die befehle wirklich nicht ausgeführt, wenn man sie einfach so eingibt
          Wenn du die Daten als reinen Text behandelst, werden sie nicht als PHP geparst.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            ich werde es einfach mal so probieren. Und die idee mit strip_tags hört sich gar nicht schlecht.

            danke euch allen.

            Kommentar


            • #7
              wow ist ja schon alt der Thread *g

              Naja aber bevor ich einen neuen aufmache will ich es hier etwas weiterführen.

              Ich möchte auch, dass meine User HTML benutzen können sollen und dürfen sie auch. Wegen der Benutzerfreundlichkeit benutze ich TinyMCE Editor.

              Klar weiß ich, dass ich Javascript ausschalten kann und mir der User doch bösartiges unterschieben kann.

              Deswegen mache ich das bis jetzt so: hoffe ihr seit damit zurfrieden.

              Alles was vom TinyMCE Editor kommt:

              Um SQL Injection zu vermeiden adslashes();
              Um JavaScript uns sonstiges zu vermeiden striptags(); Bei striptags erlaube ich dann fast alle HTML tags ausser die frame geschichte und so weiter.

              FRAGE: Wie sehr kann ich mich auf striptags verlassen ?
              Es ist egal ob der user seine seite verunstalten kann mir ist nur wichtig, dass er mir kein javaScript unterschieben kann.

              Was könnte man noch in Bezug auf Sicherheit und TinyMCE Editor tun für alle die denn nicht kennen ist so ein ähnlicher Editor wie FCKEditor
              Zuletzt geändert von Blitzschlag; 29.02.2008, 15:27.

              Kommentar


              • #8
                Um SQL Injection zu vermeiden adslashes();
                Besser gleich mysql_real_escape_string() verwenden.
                Es ist egal ob der user seine seite verunstalten kann mir ist nur wichtig, dass er mir kein javaScript unterschieben kann.
                Dann ist imho strip_tags() ein etwas zu grobes Geschütz. Dann wäre es für mich einfacher einfach einen regExp zu machen
                PHP-Code:
                preg_replace('/<script[^>]*>.*<\\/script>/isU','',$string); 
                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  Besser gleich mysql_real_escape_string() verwenden.
                  Mache ich sonst auch immer nur leider verändert er das so scharf, dass ich dann nicht mehr stripslashes drauf anwenden kann. HTML soll ja im enddefekt durchkommen.

                  Man Reguläre Ausdrücke sind immer so schwer *g aber ich habe mich auch damit auseinander gesetzt.

                  Die möglichkeit habe ich auch schon benutzt dachte, (nachdem ich nicht schlafen konnte weil ich dachte alles wäre unsicher) dann aber och ich weiß ja was sie dürfen und was nicht also striptags() dann kann ich sicher sein, dass ich nichts vergessen habe.

                  Kommentar


                  • #10
                    Mache ich sonst auch immer nur leider verändert er das so scharf, dass ich dann nicht mehr stripslashes drauf anwenden kann. HTML soll ja im enddefekt durchkommen.
                    Ähm strip_slashes() brauchst du auch nicht bei einem String der mit mysql_real_escape_string() bearbeitet wurde.
                    Und
                    Hinweis: Ist magic_quotes_gpc aktiviert, wenden Sie zuerst stripslashes() auf die Daten an. Das Bearbeiten bereits in irgend einer Form maskierter Daten durch mysql_real_escape_string führt ansonsten dazu, dass bereits Maskiertes doppelt maskiert wird.
                    die magic_quotes_gpc solltest du auf off haben oder sonst zuerst ein strip_slashes() drüber.
                    Man Reguläre Ausdrücke sind immer so schwer *g aber ich habe mich auch damit auseinander gesetzt.
                    Sind kompliziert aber brutal mächtig

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Der Hinweis ist cool. Vielleicht löst das Probleme mit denn ich umständliche Lösungen gefunden hatte *lach.

                      Danke aufjedenfall für deine Antworten.

                      Ohja sehr mächtig sogar benutze nur die leichten für mod_rewrite

                      Naja aber wie es aussieht kann ich mich auf jeden fall auf stripTags verlassen das ist ja meine größte sorge gewesen.

                      Gruss

                      Kommentar


                      • #12
                        Original geschrieben von Blitzschlag
                        Naja aber wie es aussieht kann ich mich auf jeden fall auf stripTags verlassen das ist ja meine größte sorge gewesen.
                        da bin ich anderer meinung, selbst mit regulären dingen wird es unmöglich sein alle fälle abzudecken, js einzuschleusen. zumindest, wenn du html zulässt.
                        z.b. js als bild verkleidet: <IMG SRC="javascript:alert('XSS');">

                        Kommentar


                        • #13
                          z.b. js als bild verkleidet: <IMG SRC="java script:alert('XSS');">
                          Habe ich mir auch schon überlegt. Aber meinste mann kann auch komplizierten gefährliches Javascript einschleusen ?

                          Kommentar


                          • #14
                            Habe ich mir auch schon überlegt. Aber meinste mann kann auch komplizierten gefährliches Javascript einschleusen ?
                            Wie oben erwähnt wurde, zum Beispiel die Zieladresse eines Formulars ändern. Dem Skript ist ziemlich Wumpe, von wo aus es ausgeführt wird. Das Schlimme ist, das es ausgeführt wird bzw. du es nicht raussortierst!!
                            Und es bleibt ja nicht nur bei JavaScript. Du kannst ja auch weitere CSS-Dateien über @import nachladen. Da kannst du sicherlich auch wieder Skripte einschleusen!

                            Kommentar


                            • #15
                              Ok ich habe es begriffen dan wäre es ja quasi unmöglich ausser einen bomben sicheren regulären Ausdruck.

                              MMM was denkst du was man dagen tun könnte ?
                              Inzwischen weiß ich ja was man so damit anstellen könnte aber eine wirklilche Problemlösung habe ich
                              nicht.

                              Kommentar

                              Lädt...
                              X