![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework/Filter/Input/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Framework\Filter\Input; use Laminas\Filter\FilterInterface; use Magento\Framework\App\ObjectManager; class MaliciousCode implements FilterInterface { /** * @var PurifierInterface|null $purifier */ private PurifierInterface $purifier; /** * @param PurifierInterface|null $purifier */ public function __construct(?PurifierInterface $purifier = null) { $this->purifier = $purifier ?? ObjectManager::getInstance()->get(PurifierInterface::class); } /** * Regular expressions for cutting malicious code * * @var string[] */ protected array $_expressions = [ //comments, must be first '/(\/\*.*\*\/)/Us', //tabs '/(\t)/', //javasript prefix '/(javascript\s*:)/Usi', //import styles '/(@import)/Usi', //js in the style attribute '/style=[^<]*((expression\s*?\([^<]*?\))|(behavior\s*:))[^<]*(?=\/*\>)/Uis', //js attributes '/(ondblclick|onclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|' . 'onload|onunload|onerror)=[^<]*(?=\/*\>)/Uis', //tags '/<\/?(script|meta|link|frame|iframe|object).*>/Uis', //scripts '/<\?\s*?(php|=).*>/Uis', //base64 usage '/src=[^<]*base64[^<]*(?=\/*\>)/Uis', ]; /** * Filter value * * @param string|array $value * @return string|array */ public function filter($value) { $replaced = 0; do { $value = preg_replace($this->_expressions, '', $value ?? '', -1, $replaced); } while ($replaced !== 0); return $this->purifier->purify($value); } /** * Add expression * * @param string $expression * @return $this */ public function addExpression(string $expression) :self { if (!in_array($expression, $this->_expressions)) { $this->_expressions[] = $expression; } return $this; } /** * Set expressions * * @param array $expressions * @return $this */ public function setExpressions(array $expressions) :self { $this->_expressions = $expressions; return $this; } }