![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
ich habe folgendes HTML-Attribut an einem img-Element: onmouseover="showTip(event, '<script>alert('Test')</script>', true)" M.E. alles richtig escapet. Bevor das an die Javascript-Funktion geht, wird das aber scheinbar wieder unescapet, denn FireBug zeigt mir in der Console an, dass dieses Skript falsch ist: missing ) after argument list showTip(event, '<script>alert('Test')</script>', true) |
|
Wie bekomme ich das jetzt sauber an die JS-Funktion übergeben? Danke |
#3
| |||
| |||
|
|
ich habe folgendes HTML-Attribut an einem img-Element: onmouseover="showTip(event, '<script>alert('Test')</script>', true)" M.E. alles richtig escapet. |
#4
| |||
| |||
|
|
onmouseover="showTip(event, '<script>alert(\'Test\')</script>', true)" |
|
zumindest wenn das zweite Argument, das du an showTip übergeben willst, eine einzelne Zeichenkette sein soll. |
#5
| |||
| |||
|
|
onmouseover="showTip(event, '<script>alert('Test')</script>', true)" Dein Ziel sollte showTip(event, '<script>alert("Test")</script>', true) lauten. |
|
Der ganze Code sieht sehr fies aus. |
|
Überlege, ob du das nicht anders viel eleganter lösen kannst. |
#6
| ||||
| ||||
|
|
Martin Honnen wrote: onmouseover="showTip(event, '<script>alert(\'Test\')</script>', true)" Ich hab es ja mal auf onmouseover="showTip(event, '<script>XXX</script>', true)" geändert. Gibt keinen Fehler mehr. Wohl weil die ' um Test mit \ escapet sind. Es ist also offensichtlich so, dass das escapete HTML vor der Übergabe an die JS-Funktion wieder unescapet wird. |
</script>',|
Wie muss ich jetzt vorgehen, um beliebiges HTML in meinem Tooltip anzuzeigen? |
|
Der Tooltip ist ein DIV, welches ein DIV enthält, was ich so setze: div.innerHTML = text; |
|
Hintergrund ist, dass ich prüfe, ob XSS verhindert wird. In der Datenbank steht das gültige Javascript. Im HTML/Javascript darf das natürlich nur escapet ankommen, damit XSS nicht möglich ist. |
#7
| |||
| |||
|
|
Chris Seidel wrote: Martin Honnen wrote: onmouseover="showTip(event, '<script>alert(\'Test\')</script>', true)" Ich hab es ja mal auf onmouseover="showTip(event, '<script>XXX</script>', true)" geändert. Gibt keinen Fehler mehr. Wohl weil die ' um Test mit \ escapet sind. Es ist also offensichtlich so, dass das escapete HTML vor der Übergabe an die JS-Funktion wieder unescapet wird. Nein. Der Attributwert ist (per DTD) vom Typ CDATA, folglich werden Entity- Referenzen darin vom Markup-Parser "unescapet". D.h. in Deinem anfänglichen Quelltext zu onmouseover="showTip(event, '<script<alert('Test')</script>', true)" |
|
[...] Funktioniert hätte somit auch z.B. onmouseover="showTip(event, '<script>alert("Test" </script>',true)" denn die " werden vor der Übergabe an die Script-Engine zu <">, wodurch für den Markup-Parser das Markup gültig und sogar XML-wohlgeformt ^^^^^^^^^^^^^^^^^^^^^ ist (Attributwert korrekt begrenzt) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
[....] 1. Eben *weil* der Attributwert vom Typ CDATA ist, müssen in HTML `<' und `>' darin _nicht_ durch (Character) Entity References ersetzt werden. (Siehe oben.) In X(HT)ML muss jedoch wegen der Wohlgeformtheit das ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ Zeichen `<' (STAGO) durch `<' ersetzt werden. [...] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |

![]() |
| Thread Tools | |
| Display Modes | |
| |