Project

General

Profile

Support #12664

TinyMCE: report/remove malicous HTML/JS Code

Added by Carsten Rose 6 months ago. Updated 1 day ago.

Status:
New
Priority:
Normal
Assignee:
Target version:
Start date:
09.06.2021
Due date:
% Done:

0%

Estimated time:
Discuss:

Description

Damit TinyMCE sinnvoll genutzt wird, darf der Content nicht htmlspecialchar kodiert gespeichert werden.

Aber: wird der Code 1:1 gespeichert, koennte ein Angreifer Javascript injizieren und z.B. die PHP Session abgreifen (JS in einem HTML Attribut, oder einfach <script>...).

Es ist wichtig den Code zu checken und entweder zu bereinigen oder abzulehnen.

#1

Updated by Carsten Rose 6 months ago

Vorschlag:

  • FE.typ=Editor/TinyMCE werden bei default 'bereinigt'
  • FE.parameter.cleanHtml=1 (default) wenn Editor=TinyMCE.
  • Der Parameter kann auf '0' gesetzt werden um das Cleanung abzuschalten.
  • Es ist wichtig das ein 'Clean' gemacht wird und kein 'Reject' (also keine Exception werfen bei unlauterem Code). Grund:
    • Wenn aus einem Worddokument viel Content kopiert wird, soll dieser bereinigt gespeichert werden
    • Wuerde er zurueck gewiesen muesste, der User umstaendlich Stueck fuer Stueck versuchen den problematischen Teil zu finden - das wird niemand machen und stattdessen sagen 'unbrauchbares System'.
  • Der Parameter cleanHtml=1 kann auch bei anderen FE.Elementen gesetzt werden. Dort ist der Default 0, und er muss aktiv gesetzt werden.
  • Das setzen des Parameters macht nur Sinn bei FE.encode=none|single tick.

Anmerkung:

Order:

  • 1) UTF8 Codes ersetzen (check ob der dom parser das bereits macht?)
  • 2) lower case (check ob der dom parser das bereits macht?)
  • 3) Blacklist Tags entfernen
  • 4) Blacklist Attribute entferen
  • 5) Alle Attribute die mit javascript:... beginnen (kann bei src und href benutzt werden), entfernen.

cleanHtml= 0|1
cleanHtmlAttribute = on.*,srcdoc,srcset
cleanHtmlAttributeMaxLength = 50 - Damit sollen ungewoehnlich lange Attribute entfernt werden.
cleanHtmlTag=script,button,source,iframe,comment,object

#2

Updated by Carsten Rose 1 day ago

  • Target version changed from 22.2.0 to 22.3.0

Also available in: Atom PDF