[TYPO3-german] JavaScript im RTE

Peter Linzenkirchner liste at lisardo.de
Wed Sep 24 13:44:41 CEST 2008


Hallo Torsten,

du musst nicht nur den RTE umkonfigurieren sondern auch den Parser,  
der die Inhalte für das Frontend aufbereitet:

lib.parseFunc_RTE.allowTags =
lib.parseFunc.allowTags =

im Setup, nicht im PageTSconfig. (Kannst du dir mit dem TypoScript  
ObjectBrowser anschauen)

Generell laufen beim RTE mindestens folgende Konvertierungsschritte ab:

1. vom RTE in die Datenbank: RTE.default.proc.entryHTMLparser_db im  
PageTSConfig
2. von der Datenbank ins Frontend: lib.parseFunc_RTE im Setup

es gibt noch weitere Konvertierungen, die können aber hier ausser Acht  
gelassen werden.

Als Beispiel noch das Problem mit den Absätzen, das auch immer wieder  
nachgefragt wird:

Der RTE schreibt eigentlich <p>-Tags in den Quellcode. Da diese aber  
erheblich stören würden, wenn der Inhalt ohne RTE bearbeitet wird (z.  
B. in einem nicht unterstützten Browser), werden die <p>-Tags beim  
Speichern _nicht_ in die Datenbank geschrieben. Wenn der Text im RTE  
erneut geöffnet wird, werden die <p>-Tags durch den RTE selbst  
automatisch wieder eingefügt.

Wenn nun der Inhalt im Frontend gerendert wird, fehlen aber die p-Tags  
und müssen ergänzt werden Das übernimmt diese Funktion:

lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.nonWrappedTag = p
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class  
= bodytext

Die Trennung in zwei verschiedene Parser erscheint umständlich, ist  
aber sehr leistungsfähig.

Gruß
Peter


PS:

Das ganze ist ein Sicherheitsrisiko, das ist dir schon klar?  
Stichwort: CSS = Cross Site Scripting. Wenn der <script>-Tag in jedem  
Inhaltselement erlaubt wird (was mit dieser Einstellung der Fall sein  
dürfte), so kann jeder Redakteur - und vor allem auch Frontend-User!!  
- JavaScript in deine Installation schmuggeln. Man kann da auch nicht   
wirklich was dagegen unternehmen, da das PageTSconfig nicht von  
Bedingungen abhängig gemacht werden kann (z. B. abhängig vom Status  
des angemeldeten Benutzers) und diese Einstellungen nicht im User- 
Setup möglich sind. Das mindeste ist, den RTE für das Frontend  
entsprechend umzukofigurieren:

RTE.default.FE.proc.allowTags =

und hier den <script>-Tag wieder zu verbieten. Das ist allerdings nur  
ausreichend, wenn Frontend-Usern _nur_ der RTE zugänglich ist und  
nicht etwa bei nicht unterstützten Browsern alternativ das normale  
Eingabefeld, da diese ja über lib.parseFunc_RTE.allowTags sowie  
lib.parseFunc.allowTags abgesichert werden, was durch deine  
Manipulation ausgeschaltet wird. Stichwort: Blog, Forum etc.!

Aus dem Grund ist das script-Tag explizit nur beim Inhaltselement HTML  
erlaubt, auf das die Frontend-User keinen Zugriff haben.

Kein Problem, wenn du keine Frontenduser hast bzw. keine Extensions  
verwendest, die das anbieten, aber wenn, dann würde ich da gründlich  
drüber nachdenken.

Gruß
Peter



Am 24.09.2008 um 12:10 schrieb Torsten Schneider:

> Hallo,
>
> kennt jemand eine Möglichkeit, beim Inhaltselement "Normaler Text" im
> RTE auch JavaScript einzubauen?
> Ich möchte nicht extra ein html-Element verwenden, sondern, wenn
> irgendwie möglich, den Code direkt zwischen zwei Textpassagen  
> einbinden.
>
> Der RTE löscht aber immer entweder Teile des Codes (wenn ich vorher  
> auf
> "Zur html-Ansicht wechseln" geschaltet und den Code dort eingefügt  
> habe)
>  oder gibt den Code als Text aus, wenn ich das Code-Stück in der
> normalen Ansicht einfüge.
>
> Den RTE anders zu konfigurieren (z.B. script bei den allowTags
> hinzuzuügen etc.) habe ich schon probiert - ohne Erfolg.
>
> Hat jemand eine Idee, wie man das lösen kann?
>
> Vielen Dank und Gruß,
>
> Torsten
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.netfielders.de
> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-german



More information about the TYPO3-german mailing list