Skip to content

Commit fbbc76b

Browse files
ZallaxDevfwolf-ilias
authored andcommitted
Survey: Stored XSS with TinyMCE
Signed-off-by: Releasemanager <webmaster@ilias.de>
1 parent 7e2c2f4 commit fbbc76b

3 files changed

Lines changed: 29 additions & 11 deletions

File tree

Modules/Survey/Editing/class.ilSurveyEditorGUI.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*
1717
*********************************************************************/
1818

19+
use ILIAS\LegalDocuments\HTMLPurifier;
1920
use ILIAS\Survey\Editing\EditManager;
2021
use ILIAS\Survey\Editing\EditingGUIRequest;
2122

@@ -1107,14 +1108,13 @@ public function saveHeadingObject(): void
11071108

11081109
$form = $this->initHeadingForm($q_id);
11091110
if ($form->checkInput()) {
1110-
$this->object->saveHeading(
1111-
ilUtil::stripSlashes(
1112-
$form->getInput("heading"),
1113-
true,
1114-
ilObjAdvancedEditing::_getUsedHTMLTagsAsString("survey")
1115-
),
1116-
$form->getInput("insertbefore")
1117-
);
1111+
$tags = ilObjAdvancedEditing::_getUsedHTMLTags("survey");
1112+
$purifier = new HTMLPurifier($tags);
1113+
$heading = $form->getInput("heading");
1114+
1115+
$heading = $purifier->purify($heading);
1116+
1117+
$this->object->saveHeading($heading, $form->getInput("insertbefore"));
11181118
$this->ctrl->redirect($this, "questions");
11191119
}
11201120

Modules/Survey/Settings/class.SettingsFormGUI.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020

2121
namespace ILIAS\Survey\Settings;
2222

23+
use ILIAS\LegalDocuments\HTMLPurifier;
2324
use ILIAS\Survey\InternalGUIService;
2425
use ILIAS\Survey\Mode\UIModifier;
2526
use ILIAS\Survey\InternalDomainService;
27+
use ilObjAdvancedEditing;
2628

2729
/**
2830
* Settings form
@@ -893,8 +895,16 @@ public function saveForm(
893895
} else {
894896
$survey->setEndDate("");
895897
}
896-
$survey->setIntroduction($form->getInput("introduction"));
897-
$survey->setOutro($form->getInput("outro"));
898+
899+
$tags = ilObjAdvancedEditing::_getUsedHTMLTags("survey");
900+
$purifier = new HTMLPurifier($tags);
901+
902+
$introduction = $form->getInput("introduction");
903+
$introduction = $purifier->purify($introduction);
904+
$survey->setIntroduction($introduction);
905+
$outro = $form->getInput("outro");
906+
$outro = $purifier->purify($outro);
907+
$survey->setOutro($outro);
898908
$survey->setShowQuestionTitles((bool) $form->getInput("show_question_titles"));
899909
$survey->setPoolUsage((bool) $form->getInput("use_pool"));
900910

Modules/SurveyQuestionPool/Questions/class.SurveyQuestionGUI.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*
1717
*********************************************************************/
1818

19+
use ILIAS\LegalDocuments\HTMLPurifier;
1920
use ILIAS\SurveyQuestionPool\Editing\EditingGUIRequest;
2021
use ILIAS\SurveyQuestionPool\Editing\EditManager;
2122

@@ -332,7 +333,14 @@ protected function saveForm(): bool
332333
$this->object->label = ($form->getInput("label"));
333334
$this->object->setAuthor($form->getInput("author"));
334335
$this->object->setDescription($form->getInput("description"));
335-
$this->object->setQuestiontext($form->getInput("question"));
336+
337+
$tags = ilObjAdvancedEditing::_getUsedHTMLTags("survey");
338+
$purifier = new HTMLPurifier($tags);
339+
$question = $form->getInput("question");
340+
341+
$question = $purifier->purify($question);
342+
343+
$this->object->setQuestiontext($question);
336344
$this->object->setObligatory($form->getInput("obligatory"));
337345

338346
$this->importEditFormValues($form);

0 commit comments

Comments
 (0)