Estoy usando HTMLPurifier para asegurarme de que no haya entradas de usuarios maliciosos.
Estoy teniendo dificultades con las imágenes base64. El normal ya está solucionado.
$config->set('URI.AllowedSchemes', ['data' => true]);
Pero, ¿qué tal lo siguiente?
<img src="data:image/svg+xml;base64,PHN2Zy...4MTEpIi8+PC9zdmc+Cg==" />
Para todos los que buscan una solución ... no hay una forma integrada de permitir imágenes svg base64. Pero hay una manera de solucionarlo.
No pude encontrar una documentación oficial, pero puede escribir validaciones personalizadas.
<?php namespace App\Services\HTMLPurifier; use HTMLPurifier_AttrDef_URI; /** * Class ParameterURIDef * @author Artem Schander */ class ParameterURIDef extends HTMLPurifier_AttrDef_URI { public function validate($uri, $config, $context) { if (preg_match('/^data:image\/svg\+xml;base64,([^\"]*)$/', $uri)) { return true; } return parent::validate($uri, $config, $context); } } $config = HTMLPurifier_Config::createDefault(); $config->set('URI.AllowedSchemes', ['data' => true]); $definition = $config->getHTMLDefinition(true); $definition->addAttribute('img', 'src', new \App\Services\HTMLPurifier\ParameterURIDef()); $HTMLPurifier = new HTMLPurifier($config);