如何在HTMLPurifier中允许图像?

时间:2010-10-01 09:13:31

标签: php html frameworks xss htmlpurifier

我想在HTML Purifier过滤器中允许图片。不幸的是,他们仍在被过滤。这段代码有什么问题?

$config->set('HTML.Doctype', 'XHTML 1.0 Transitional');
$config->set('URI.DisableExternalResources', false);
$config->set('URI.DisableResources', false);
$config->set('HTML.Allowed', 'u,p,b,i,span[style],p,strong,em,li,ul,ol,div[align],br,img');

感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

您需要允许src和alt属性。如果您未能允许元素/

的必需属性,HTML Purifier可能会警告您

答案 1 :(得分:2)

将这行代码添加到您的代码中可以解决问题:

$config->set('HTML.AllowedAttributes', 'src, height, width, alt');

答案 2 :(得分:0)

HTML Purifier在http://之后寻找https://src=",这可能会在发布数据时丢失(内联src =“data:image / png; base64,....)或您的希望这对你有用,因为它对我有用。

答案 3 :(得分:0)

要接受b64图像,您必须添加新的URIScheme:

 if(!class_exists("HTMLPurifier_URIScheme_data")){
        class HTMLPurifier_URIScheme_data extends HTMLPurifier_URIScheme {

            public $default_port = null;
            public $browsable = false;
            public $hierarchical = true;

            public function validate(&$uri, $config, $context) {
                return true;
            }

        }
    }

HTMLPurifier_URISchemeRegistry::instance()->register("data", new HTMLPurifier_URIScheme_data());

来源:http://htmlpurifier.org/phorum/read.php?3,4316,4318,quote=1

" Nick",制作此代码的人说,必须设置:

$browsable = true;
$hierarchical = false;

但在我的情况下,我没有。