alle Script-Tags entfernen für eine Vorschau
hotti
- javascript
0 Matthias Apsel
1 1UnitedPower0 hotti0 hotti0 1UnitedPower0 hotti
hi,
s. Thema. Es geht um eine Online-Demo meines CMS, da können Bodies editiert werden und so kann da auch JavsScript eingebaut sein. Es soll jedoch eine Vorschau geben und dafür müssen die <script>-Tags alle raus. Gibt es evntl. in jQuery eine fertige Funktion, welche die gewünschten Tags aus einer String-Variablen (und nur aus dieser) entfernt?
Ansonsten müsste ich den String erst zum Server jagen und das mit Perl erledigen.
Bitte mal um Hinweise, Danke Dir!
Om nah hoo pez nyeetz, hotti!
s. Thema. Es geht um eine Online-Demo meines CMS, da können Bodies editiert werden und so kann da auch JavsScript eingebaut sein. Es soll jedoch eine Vorschau geben und dafür müssen die <script>-Tags alle raus. Gibt es evntl. in jQuery eine fertige Funktion, welche die gewünschten Tags aus einer String-Variablen (und nur aus dieser) entfernt?
Ansonsten müsste ich den String erst zum Server jagen und das mit Perl erledigen.
Bitte mal um Hinweise, Danke Dir!
Ersetze <script durch <!--script und </script> durch </script-->.
Matthias
Meine Damen und Herren, habe ich Ihre Aufmerksamkeit?
s. Thema. Es geht um eine Online-Demo meines CMS da können Bodies editiert werden und so kann da auch JavsScript eingebaut sein. Es soll jedoch eine Vorschau geben und dafür müssen die <script>-Tags alle raus.
Vermutlich möchtest du damit XSS-Attacken vermeiden. Da reicht es aber nicht aus nur <script>
-Tags zu entfernen. Es gibt diverse andere Möglichkeiten JavaScript in HTML einzubetten. Beispielsweise über Attribut-EventHandler: <button onclick="alert('buhaha');">
oder das JavaScript-URI-Scheme: <a href="javascript:alert('buhaha');">
Gibt es evntl. in jQuery eine fertige Funktion, welche die gewünschten Tags aus einer String-Variablen (und nur aus dieser) entfernt?
String-Verarbeitungsfunktionen sind ungeeignet für DOM-Manipulationen. Die Grenzen sind da relativ schnell erschöpft.
Bitte mal um Hinweise, Danke Dir!
Ich würde JavaScript gar nicht generell unterbinden, sondern eine Sandbox für User-generiertes JavaScript schaffen. JavaScript ist immerhin ein wichtiger Bestandteil jeder Webseite und deine Vorschau-Funktion sollte das nicht einfach ignorieren.
Trotzdem musst du natürlich dafür sorgen, dass außerhalb der Sandbox kein ausführbarer JavaScript-Code landet. XSS ist dein Stichwort, dazu solltest du jede Menge Lektüre finden.
Danke Dir,
so wie es hier mit der Vorschau aussieht, wird, <script> gar nicht ausgeführt. Oder habe ich was übersehen?
MfG
Meine Damen und Herren, habe ich Ihre Aufmerksamkeit?
so wie es hier mit der Vorschau aussieht, wird, <script> gar nicht ausgeführt. Oder habe ich was übersehen?
Was sollte denn passieren, wenn man auf Vorschau klickt? In meinem Test ist garnichts passiert.
Die Seite schmeißt mir übrigens 6 Fehler in die Konsole und hat sich nach 3,4 Klicks aufgehangen.
Meine Damen und Herren, habe ich Ihre Aufmerksamkeit?
Danke Dir,
so wie es hier mit der Vorschau aussieht, wird, <script> gar nicht ausgeführt. Oder habe ich was übersehen?
Du fügst die Benutzereingaben über innerHTML ein, wenn man <script>-Elemente als DOMString in das bestehende Dokument einfügt werden diese AFAIK nicht automatisch ausgeführt.
Für die anderen Methodoen Javascript einzubetten (onclick, href="javascript:") gilt das allerdings nicht.
Eine einfache XSS-Attacke auf dein Skript:
<img src="foooooo" onerror="alert('Ich bin ein XSS-Angriff');">
hi,
Trotzdem musst du natürlich dafür sorgen, dass außerhalb der Sandbox kein ausführbarer JavaScript-Code landet. XSS ist dein Stichwort, dazu solltest du jede Menge Lektüre finden.
Lektüre ja, aber kein Beispiel zum Einrichten einer Sandbox wo usergeneriertes JS schadenfrei ausgeführt werden kann. Hast Du ein Beispiel?
Soweit ich XSS verstehe, wird das nur dann richtig böse, wenn die Location einen scheme://auth/path hat like http://example.com.
MfG
Meine Damen und Herren, habe ich Ihre Aufmerksamkeit?
Trotzdem musst du natürlich dafür sorgen, dass außerhalb der Sandbox kein ausführbarer JavaScript-Code landet. XSS ist dein Stichwort, dazu solltest du jede Menge Lektüre finden.
Lektüre ja, aber kein Beispiel zum Einrichten einer Sandbox wo usergeneriertes JS schadenfrei ausgeführt werden kann. Hast Du ein Beispiel?
Zum Beispiel: Google caja oder Crockfords ADsafe.
Das Thema wurde auch bei Stackoverflow schon häufiger diskutierte, siehe auch die verwandten Beiträge.
Soweit ich XSS verstehe, wird das nur dann richtig böse, wenn die Location einen scheme://auth/path hat like http://example.com.
Wenn es einem Angreifer gelingt JavaScript-Code in deine Seite einzuschleusen, dann ist immer richtig kritisch. Egal über welche Adresse die Nutzer oder Angreifer auf deine Seite gelangt sind.