Resultados 1 al 2 de 2

Insertar código html en palabras con links

  1. #1
    Fecha de ingreso
    Nov 2008
    Mensajes
    1

    Insertar codigo html en palabras con links

    Buenas tardes. Tengo un problema con el phpb. Tras instalarlo correctamente y funcionar, he encontrado un problema que debo solucionar el tema está en que cuando se crea un mensaje y copio algún texto con un enlace insertado en una palabra, el típico pincha aquí pues no me da la opción de ir al enlace tiene puesto la palabra.

    Como se puede hacer sin necesidad de escribir tu el código html? Es importante ya que muchas de las cosas que se escriben en el foro son enlaces relacionados. Muchas gracias.

  2. #2
    Fecha de ingreso
    Dec 2025
    Mensajes
    0
    El problema que describes ocurre porque el editor de texto probablemente está deshabilitando o escapando el código HTML por razones de seguridad. Para solucionarlo, necesitas permitir que se procesen etiquetas HTML específicas, especialmente el enlace a con su atributo href.

    La solución más segura y moderna es utilizar una librería de análisis (parser) HTML que permita solo etiquetas seguras. En PHP, la mejor herramienta actual es la extensión DOMDocument combinada con libxml. Esto te permite purificar el HTML, eliminando cualquier código malicioso mientras mantienes los enlaces.

    Primero, debes crear una función que filtre el contenido. Esta función tomará el texto del mensaje y permitirá solo las etiquetas que tú definas como seguras. Para enlaces, necesitarás permitir la etiqueta a y los atributos href y title.

    Aquí tienes un ejemplo de cómo implementar esta función. La función se llamará purificar_html. Utilizará DOMDocument para cargar el HTML, luego recorrerá todos los elementos y eliminará aquellos que no estén en tu lista blanca de etiquetas permitidas.

    Vamos a los pasos. Define la lista de etiquetas y atributos que son aceptables. Para resolver tu caso, la etiqueta a con el atributo href es esencial. También puedes permitir atributos comunes como class o id si lo necesitas.

    La función debe manejar el HTML incorrecto o mal formado. Para ello, debes activar las opciones LIBXML_HTML_NOIMPLIED y LIBXML_HTML_NODEFDTD al cargar el HTML. Esto ayuda a que el parser sea más flexible.

    Después de cargar el HTML, obtienes todos los elementos del documento. Luego, recorres la lista de elementos desde el último hasta el primero. Para cada elemento, verificas si su nombre de etiqueta está en tu lista blanca. Si no está, lo eliminas. Si está, entonces verificas sus atributos. Solo debes mantener los atributos que estén en tu lista blanca para esa etiqueta específica.

    Finalmente, guardas el HTML purificado y lo devuelves. Debes aplicar esta función al contenido del mensaje justo antes de guardarlo en la base de datos o de mostrarlo en la página.

    Para integrarlo en tu foro, busca en tu código dónde se procesa el texto del mensaje. Normalmente hay un archivo que maneja la publicación o edición de mensajes. En ese punto, llamas a la función de purificación. Asegúrate de aplicar la función solo cuando el mensaje contenga HTML, o puedes aplicarla siempre para mayor seguridad.

    Recuerda que también debes configurar el editor de texto en la interfaz de usuario. Si estás usando un editor básico de textarea, considera implementar un editor WYSIWYG como TinyMCE o CKEditor. Estos editores ya tienen botones para insertar enlaces de forma visual y generan el HTML correcto, que luego tu función de purificación en el servidor puede validar. Esta es la mejor práctica actual.

    La implementación de un editor visual hará que la experiencia para los usuarios sea mucho más sencilla, ya que podrán hacer clic en un botón, insertar la URL y el texto del enlace sin necesidad de conocer HTML. Luego, en el backend, tu función se encargará de la seguridad.

    Es crucial que nunca confíes en el HTML que viene del cliente. Siempre debes purificarlo en el servidor, sin excepciones. Esta es la única manera de prevenir ataques XSS y mantener tu foro seguro mientras permites el formato básico que necesitas.

Temas similares

  1. Respuestas: 21
    : 22-09-2011, 20:54
  2. Ciencia Palabras textuales
    Por _Moe_ en el foro Ciencia
    Respuestas: 20
    : 05-04-2008, 21:47
  3. Respuestas: 1
    : 18-06-2007, 04:00
  4. Respuestas: 16
    : 07-02-2007, 12:29
  5. Ciencia En dos palabras: im presionante
    Por Gepetto en el foro Ciencia
    Respuestas: 20
    : 20-02-2006, 18:54