Project

General

Profile

Actions

Feature #12664

open

TinyMCE: report/remove malicous HTML/JS Code

Added by Carsten Rose over 1 year ago. Updated 8 days ago.

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

50%

Estimated time:
Discuss:
Prio Planung:

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.


Related issues

Related to QFQ - Feature #14320: Allow specific HTML Tags and Attributes: general, TinyMCEIn ProgressEnis Nuredini14.06.2022

Actions
Actions #1

Updated by Carsten Rose over 1 year 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

Actions #2

Updated by Carsten Rose 10 months ago

  • Target version changed from next3 to next4
Actions #3

Updated by Carsten Rose 6 months ago

  • Tracker changed from Support to Feature
Actions #4

Updated by Carsten Rose 4 months ago

  • Related to Feature #14320: Allow specific HTML Tags and Attributes: general, TinyMCE added
Actions #5

Updated by Enis Nuredini 8 days ago

Actions

Also available in: Atom PDF