Estoy usando una versión antigua de CKEditor, todavía se llamaba FCKEditor, pero estas herramientas funcionan para cualquiera, TinyMCE (ups, no recuerdo otros!), incluso si el origen proviene de archivos, base de datos, $_POST, etc.
Lo primero que busqué fue directamente la extensión PHP Tidy, pero requiere que PHP se haya compilado para permitir su uso y también hay que modificar php.ini
Principalmente por portabilidad (no tener que configurar servidores) y por algunos comentarios en contra, seguí buscando opciones.
Encontré HTML Purifier que, para ser sinceros, parece una de las mejores alternativas, pero la estructura de directorios y la cantidad de archivos me hizo desistir, no tanto por no poder configurarlo, sino porque mis necesidades en estos momentos son tan básicas que se me hace exagerada la herramienta.
Finalmente, di con htmLawed, script de un único archivo, fácil de configurar, documentación y ejemplos incluidos en la descarga y, lo más importante, parece cubrir al 100% mis necesidades.
Entrados en materia, la configuración que requiero es esta:
Código PHP:
Ver original
'elements' => '* -object', // Permitir todas las etiquetas, excepto object 'keep_bad' => 0, // Eliminar etiquetas malformadas o no permitidas 'clean_ms_char' => 2, // Eliminar caracteres raros insertados por MS-Word 'comment' => 1, // Eliminar comentarios html <!-- Esto --> 'css_expression' => 1, // Permitir style="" en etiquetas ); // Incluimos el script include 'htmLawed.php'; // Saneamos una entrada desde $_POST $myHtml = htmLawed($_POST['rich_text'], $htmLawedConfig); // Voilà!
htmLawed() tiene una opción para evitar ataques XSS, pero prefiero usar el aporte de GatorV, que aplico previamente a todas las entradas ($_GET, $_POST, $_COOKIE, etc.).
Cabe aclarar que después de esto realizo validaciones, como permitir el uso de Javascript sólo a administradores y otros detalles de ese tipo.
Espero que a alguien pueda serle útil esta info.