Foros del Web » Programando para Internet » PHP »

mostrar texto con html_entity_decode

Estas en el tema de mostrar texto con html_entity_decode en el foro de PHP en Foros del Web. Necesito visualizar código html a través de la función html_entity_decode(). El problema es que dicho código proviene de un editor WYSIWYG por parte del usuario ...
  #1 (permalink)  
Antiguo 26/04/2010, 02:45
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta mostrar texto con html_entity_decode

Necesito visualizar código html a través de la función html_entity_decode(). El problema es que dicho código proviene de un editor WYSIWYG por parte del usuario existiendo la posibilidad de existir etiquetas script, style, import, ... y así producirse ataques XSS o CSRF.

Me pregunto si la mejor forma de evitar esto es limpiar el código ( eliminando tags maliciosas así como dando estilo a los tags -> style=' ' ) antes de introducirlo en la DDBB o limpiar el código cuando visulizamos el contenido en pantalla?

Un saludo

Jose

Última edición por cocodj69; 26/04/2010 a las 03:18
  #2 (permalink)  
Antiguo 26/04/2010, 08:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: mostrar texto con html_entity_decode

Eso va a depender de lo que quieras hacer. Si lo que quieres es contenido solamente, no es necesario ingresarlo en la base de datos, si lo que deseas es también los estilos, no veo inconveniente en ingresarlo en la base de datos, siempre y cuando la aplicación evites que al imprimir la información lo muestres para evitar lo que mencionas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 26/04/2010, 08:46
 
Fecha de Ingreso: abril-2010
Mensajes: 19
Antigüedad: 14 años
Puntos: 0
Respuesta: mostrar texto con html_entity_decode

Seria mejor limpiar el codigo antes de insertarlo en la base datos asi ahorras recursos y memoria RAM, si lo limpias cada que imprimes en pantalla esto consume más recursos por que si lo estas mostrando en un sitio que recibe 1000 visitas, entonces se ha limpiado el codigo 1000 veces, a un que estamso hablando de milesimas de segundo lo que tarda en mostrar los datos, pero en programación ahi que ser muy codo/egoista con la memoria ram.
  #4 (permalink)  
Antiguo 26/04/2010, 09:26
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Respuesta: mostrar texto con html_entity_decode

Si, siempre soy partidario de limpiar el código antes de insetarlo en DDBB. El único inconveniente es saber cuales son las tags que pueden ser un problema: script, css, ...

¿Hay alguna forma de saber las tags que suponen una amenaza?

Grácias por las respuestas!
  #5 (permalink)  
Antiguo 26/04/2010, 09:27
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: mostrar texto con html_entity_decode

Esto te puede ayudar : strip_tags

Lo que hace es eliminar los tags tanto de HTML como de PHP, así te evitarías tener que verificar manualmente si contienen tags o no.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #6 (permalink)  
Antiguo 26/04/2010, 09:29
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: mostrar texto con html_entity_decode

Bueno te recomiendo que leas sobre la función strip_tags.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 26/04/2010, 09:41
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: mostrar texto con html_entity_decode

Hay un inconveniente: Si elimino los tags posteriormente cuando quiera acceder al texto a través del editor WYSIWYG para realizar algún tipo de modificación, el texto no mantendrá el estado original!!

Necesito que el texto sea HTML para mantener el formato!!!

¿Que hago entonces?
  #8 (permalink)  
Antiguo 26/04/2010, 09:49
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: mostrar texto con html_entity_decode

Como te indique eso va a depender de lo que quieras hacer. En tu caso, puedes eliminar o modificar cuando muestres en la página.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 26/04/2010, 09:52
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: mostrar texto con html_entity_decode

ok grácias!! De todas formas necesito tener muy claro cuales son las tags que pueden causar problemas!!
  #10 (permalink)  
Antiguo 26/04/2010, 10:00
Avatar de zerpico_01  
Fecha de Ingreso: enero-2008
Ubicación: Wilde - Avellaneda -
Mensajes: 421
Antigüedad: 16 años, 3 meses
Puntos: 13
Respuesta: mostrar texto con html_entity_decode

Cita:
Iniciado por cocodj69 Ver Mensaje
Necesito visualizar código html a través de la función html_entity_decode(). El problema es que dicho código proviene de un editor WYSIWYG por parte del usuario existiendo la posibilidad de existir etiquetas script, style, import, ... y así producirse ataques XSS o CSRF.

Me pregunto si la mejor forma de evitar esto es limpiar el código ( eliminando tags maliciosas así como dando estilo a los tags -> style=' ' ) antes de introducirlo en la DDBB o limpiar el código cuando visulizamos el contenido en pantalla?

Un saludo

Jose
Si entendi bien, estas usando
WYSIWYG editor, debes configurarlo, o desde el codigo javascript quita las etiquetas que no desees, como --> style, script, javscript etc etc etc
Normalmente las etiquetas maliciosas bienen desbilitadas, mira que estes usando la ultima version del
WYSIWYG ...

saludos!!!

Última edición por zerpico_01; 26/04/2010 a las 10:06
  #11 (permalink)  
Antiguo 26/04/2010, 10:08
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: mostrar texto con html_entity_decode

El problema no es al insertar etiquetas con botones habilitados del editor, sino al introducir texto plano...

'Hola esto es texto

<script>alert('Hola!');</script>
';
  #12 (permalink)  
Antiguo 26/04/2010, 16:10
 
Fecha de Ingreso: abril-2010
Mensajes: 19
Antigüedad: 14 años
Puntos: 0
Respuesta: mostrar texto con html_entity_decode

Cita:
Iniciado por cocodj69 Ver Mensaje
El problema no es al insertar etiquetas con botones habilitados del editor, sino al introducir texto plano...

'Hola esto es texto

<script>alert('Hola!');</script>
';
Ok si no quieres eliminar los tags maliciosos puedes convertirlos a su entidad HTML, es decir primero los almacenas en BD con su ENTIDAD HTML equivalente, asi cuando lo imprimas no va salir una ALERTA que diga HOLA, si no simplemente <script>alert('Hola!');</script> y cuando lo tengas que editar lo DECODIFICAS a su etiqueta html equivalente.

Todo eso se puede lograr con htmlspecialchars y htmlspecials_decode (no recuerdo bien el nombre de las funciones busca en php.net)
  #13 (permalink)  
Antiguo 27/04/2010, 01:36
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: mostrar texto con html_entity_decode

Cita:
Iniciado por BaEEz_ Ver Mensaje
Ok si no quieres eliminar los tags maliciosos puedes convertirlos a su entidad HTML, es decir primero los almacenas en BD con su ENTIDAD HTML equivalente, asi cuando lo imprimas no va salir una ALERTA que diga HOLA
Si imprimo el texto sin decodificar las entidades HTML, el código aparece de la siguiente manera...

<p>Hola</p> <script>alert();</script> <u>buenos dias</u>

No salta el javascript pero no se interpreta el HTML. es necesario aplicar la función html_decode_tags() y entonces se ejecuta el alert().

De todas formas, no se porque pero cuando recibo el texto ( POST ) del editor WYSIWYG para insertarlo en la DDBB, si he formateado el texto del editor con los botones disponibles el texto lo recibo con etiquetas ( <u>hola</u>... ) y si he escrito texto directamente ( <u>pepe</u> ) lo recibo como entidades ( &lt;u&gt;pepe&lt;/&gt; ). Esto lo hace el editor por seguridad????
  #14 (permalink)  
Antiguo 27/04/2010, 13:16
Avatar de zerpico_01  
Fecha de Ingreso: enero-2008
Ubicación: Wilde - Avellaneda -
Mensajes: 421
Antigüedad: 16 años, 3 meses
Puntos: 13
Respuesta: mostrar texto con html_entity_decode




Ya te he dicho los editores html traen opciones y funciones que elminaran todo tag malicioso, en algunos puedes cambiar esto en otro no :


Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:31.