Skip to content

Commit e27a8b5

Browse files
committed
MC-3578: Script tag removal
1 parent dcb73b6 commit e27a8b5

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

app/code/Magento/PageBuilder/Model/Stage/Renderer/CmsStaticBlock.php

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,15 @@ class CmsStaticBlock implements \Magento\PageBuilder\Model\Stage\RendererInterfa
2626
private $widgetDirectiveRenderer;
2727

2828
/**
29-
* Constructor
29+
* CmsStaticBlock constructor.
3030
*
31-
* @param WidgetDirective $widgetDirectiveRenderer
3231
* @param \Magento\Cms\Model\ResourceModel\Block\CollectionFactory $blockCollectionFactory
32+
* @param WidgetDirective $widgetDirectiveRenderer
3333
*/
3434
public function __construct(
35-
WidgetDirective $widgetDirectiveRenderer,
36-
\Magento\Cms\Model\ResourceModel\Block\CollectionFactory $blockCollectionFactory
35+
\Magento\Cms\Model\ResourceModel\Block\CollectionFactory $blockCollectionFactory,
36+
WidgetDirective $widgetDirectiveRenderer
3737
) {
38-
3938
$this->blockCollectionFactory = $blockCollectionFactory;
4039
$this->widgetDirectiveRenderer = $widgetDirectiveRenderer;
4140
}
@@ -79,12 +78,28 @@ public function render(array $params): array
7978

8079
if ($block->isActive()) {
8180
$directiveResult = $this->widgetDirectiveRenderer->render($params);
82-
$result['content'] = $directiveResult['content'];
81+
$result['content'] = $this->removeScriptTags($directiveResult['content']);
8382
$result['error'] = $directiveResult['error'];
8483
} else {
8584
$result['error'] = __('Block disabled');
8685
}
8786

8887
return $result;
8988
}
89+
90+
/**
91+
* Remove script tag from html
92+
*
93+
* @param string $html
94+
* @return string
95+
*/
96+
private function removeScriptTags(string $html) : string
97+
{
98+
$dom = new \DOMDocument();
99+
$dom->loadHTML($html);
100+
foreach (iterator_to_array($dom->getElementsByTagName('script')) as $item) {
101+
$item->parentNode->removeChild($item);
102+
}
103+
return $dom->saveHTML();
104+
}
90105
}

0 commit comments

Comments
 (0)