Autor Zpráva
janick
Profil
Zdravím, mám malou otázečku ohledně TinyMCE a javascriptu. Nedávno jsem TinyMCE uvedl do provozu na stránkách, který spravuju a všiml jsem si, že když kliknu na tlačítko editace HTML a napíšu nějaký script v javascriptu např
.:<script>alert('ahoj')</script> 
, tak se tento skrit po zobrazení v diskuzi provede. TinyMCE by, ale text scriptu mělo dávat do komentářů. Zjistil jsem, že Ho opravdu do komentářů dává, ale používá komentáře pro HTML (
<!--    -->
), kter0 v javascriptu očividně nefungují.
Zajímalo by mě, jak přinutit TinyMCE, aby v text mezi tagy <script></script> dával do komentářů javascriptu (
/*    */
)?
bohyn
Profil
janick
Zjistil jsem, že Ho opravdu do komentářů dává, ale používá komentáře pro HTML
Tak se to u JS bezne dela, dneska to ale uz neni nutne. Prohlizecu co neznaji znacku <script> je malo.

kter0 v javascriptu očividně nefungují.
Kdyz das do JS tohle:
/* alert('ahoj') */
Tak je ti to k nicemu. JS se neprovede a slouzi jen jako nadbytecny komentar.
Takze odpoved je IHMO nijak. Jedine zmenit zrojovy kod TinyMCE, ale je otazka proc to delat.
Joker
Profil
bohyn
Spíš takhle, ne?
*/ alert('ahoj') /*


janick
TinyMCE myslím umí ten kód i filtrovat, jenže- tohle nikdy nebude bezpečné. Co když si uživatel TinyMCE prostě vypne a skript napíše do normální textarea? Anebo kdyby opravdu chtěl škodit, není problém tu kontrolu nějak vyblokovat.

Jediný bezpečný způsob je odfiltrování skriptu na straně serveru.
bohyn
Profil
Joker
Spíš takhle, ne?
*/ alert('ahoj') /*

Nevim co funguje tobe, ale ja komentare zapisuju takhle:
/* tohle je komentar */
A tak to autor asi i myslel
Joker
Profil
bohyn
Jo aha. Já to myslel jako způsob, jak to zakomentování obejít.
Když zadám: */ alert('ahoj') /*
zakomentuje se to /**/ alert('ahoj') /**/
...a skript se provede.

Nakolik jsem to pochopil, janick právě chce, aby se skript neprovedl.
bohyn
Profil
V TiniMCE se nevyznam, ale kouknul sem do wiki dokumentace a asi by pomohla konfiguracni promena invalid_elements a pridat tam script. Obsah <script> a </script> to ale asi neodstrani.
janick
Profil
Dobrý den, chtěl jsem právě, aby se ten script neprovedl. Takže jsem ještě před uložením do databáze prohnal text funkcí
$text=str_replace('<script ','javascript tu fungovat nebude.',$text);
a všechno je v poho. Jen mě zarazilo, že takovej celkem dobrej WISIWIG editor neumí správně komentovat javascript.
Podle mě je to lepší řešení, protože to nejde obejít vypnutím javascriptu.
Joker
Profil
janick
Jen mě zarazilo, že takovej celkem dobrej WISIWIG editor neumí správně komentovat javascript.
Ale umí. TinyMCE to dělá správně. Akorát to komentování neslouží k znefunkčnění Javascriptu, jak si myslíte.
Kdybyste chtěl Javascript odfiltrovat, aby se neprovedl, použijte invalid elements, jak píše bohyn.

Každopádně správná metoda je kontrola na straně serveru, kontrola na straně klienta z principu nemůže být stoprocentní.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: