Prohibir usar html en respuestas y bbcode

BLZKZ

Os pongo en situación, estoy haciendo un CMS por mi cuenta con CI (codeigniter) y obviamente no tiene helpers para todo (aunque para smilyes sí xD ), y tengo un problema, y es que realmente no se como implementar un sistema que no deje meter codigo HTML a copón en las respuestas (de hecho que ningún formulario lo deje hacer por motivos obvios de seguridad), porque quiero hacer que todo vaya con BBcode.

Me he imaginado que sí o sí hay que parsear el texto introducido, y también que se haría con expresiones regulares, pero ni idea de expresiones regulares. La otra opción es buscar solo los < y > y cambiarlos por el típico codigo &quot y tal, pero ni se equivalencias ni tampoco se como hacerlo.

Mi segundo problema es el de BBcode, he visto esto http://www.php.net/manual/es/book.bbcode.php pero la documentación no es que sea impresionante y la integracion con CI no es especialmente sencilla, ¿conoceis una opcion mejor?

saludos y gracias :)

r2d2rigo
$texto = str_replace("<", "&lt;", $texto);
$texto = str_replace(">", "&gt;", $texto);

Y yastá.

BLZKZ

bien, se me ha olvidado hasta usar las funciones de php xD

gracie por el &lt y el &gt xD

Ahora solo falta lo del bbcode pero ya me fastidia menos, a unas malas me hago mi propio sistema :S

OleMoudi

Como mínimo haz un strip_tags() del contenido (no uses el parámetro allowable_tags), pero yo te recomiendo que uses algo más robusto como HTMLPurifier o HTMLawed.

Con htmlpurifier te quitas la posibilidad de tener que usar bbcode.

De todas formas voy a llamar a la caballería (Beavis) que de esto controla más.

1 respuesta
BLZKZ

#4 gracias! estoy echando un ojo a la documentacion de HTMLPurifier a ver si consigo meterselo al CI xD pinta bien la verdad.

También gracias por strip_tags que no lo conocia. A ver si beavis dice algo más, pero de momento creo que esto no seria mal comienzo xD

LOc0

En PHP lo que pides es algo muy trillado ya. Tienes: http://php.net/manual/es/function.htmlspecialchars.php y http://www.php.net/manual/es/function.htmlentities.php para filtrar el HTML y hacerlo "inofensivo".

Si lo que quieres es cargarte el código HTML pues tendrás que tirar de http://es2.php.net/manual/es/function.preg-replace.php y si optas por programarte tu BBCODE pues IDEM (lo único un poquillo "raro" son los patrones regex recursivos para expresiones anidadas http://www.php.net/manual/es/regexp.reference.recursive.php )

Salu2 ;)

1 respuesta
Beavis

Aquí en mediavida usamos la extensión de pecl que comentas en #1, antes teníamos una clase propia de bbcode pero el rendimiento de la extensión nativa es mejor varios órdenes de magnitud, algo a tener en cuenta si la usas on the fly. La única pega es que hay que instalarla y según el hosting pues a lo mejor no lo tienes disponible. Si quieres alternativas al bbcode puedes mirarte el markdown que está bastante maduro también y hay bastantes clases disponibles en php para usarlo.

Respecto a la primera duda htmlspecialchars($texto,ENT_QUOTES) es lo que suele usarse para sanear así rápido.

1 respuesta
BLZKZ

gracias #6 y #7 xD en poco tiempo la de ayuda que habeis puesto xD

;)

Usuarios habituales

  • BLZKZ
  • Beavis
  • LOc0
  • OleMoudi
  • r2d2rigo