Open nanasess opened 1 year ago
modifier.script_escape.php に htmlpurifier を適用することで対応できそう
以下のようなパッチで、従来以外のパターンにも対応できそう
diff --git a/data/smarty_extends/modifier.script_escape.php b/data/smarty_extends/modifier.script_escape.php
index 99885cd382..3d14551bb1 100644
--- a/data/smarty_extends/modifier.script_escape.php
+++ b/data/smarty_extends/modifier.script_escape.php
@@ -1,4 +1,5 @@
<?php
+require_once __DIR__ . '/../vendor/ezyang/htmlpurifier/library/HTMLPurifier.auto.php';
/**
* Scriptタグをエスケープする
*
@@ -50,5 +51,10 @@ function smarty_modifier_script_escape($value)
$value = preg_replace($pattern, $convert, $value);
}
- return $value;
+ // 念のために HTMLPurifier でサニタイズ
+ $config = HTMLPurifier_Config::createDefault();
+ $config->set('Cache.SerializerPath', __DIR__ . '/../cache');
+ $purify = new HTMLPurifier($config);
+
+ return $purify->purify($value ?? '');
}
4系でも使用している ezyang/htmlpurifier の導入を検討する。 PHP5.6以降のサポートだが、コードを見るかぎりはPHP5.4以降で動作しそう。