Foros del Web » Programando para Internet » PHP »

htmlentities duda

Estas en el tema de htmlentities duda en el foro de PHP en Foros del Web. una pregunta: si uso htmlentities para las cajas de texto en comentarios ¿puedo tener problemas de seguridad? ¿ podrían ponerme un script que no quisiera ...
  #1 (permalink)  
Antiguo 14/09/2009, 00:58
Avatar de lucasphp  
Fecha de Ingreso: mayo-2009
Ubicación: Misiones
Mensajes: 170
Antigüedad: 14 años, 11 meses
Puntos: 3
htmlentities duda

una pregunta: si uso htmlentities para las cajas de texto en comentarios ¿puedo tener problemas de seguridad? ¿ podrían ponerme un script que no quisiera que se ejecute? porque probé agregar en una caja <script>alert("cualquier cosa");</script> y en la pantalla de usuario lo imprime textualmente, sin tirar la alerta. Aclaro que antes de imprimirlo con echo, paso html_entity_decode al resultado.
Si pudieran aclararme la duda lo agradecería.
  #2 (permalink)  
Antiguo 14/09/2009, 01:07
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, 11 meses
Puntos: 1517
Respuesta: htmlentities duda

No debes html_entity_decode al texto ya que si lo haces en la pantalla va a salir un alert. Esto es peligros por los ataques XSS te sugiero buscar en internet con respecto a eso. Si vas a ingresar en la base de datos debes usar mysql_real_escape_string y htmlentities debes usar para mostrar en la pantalla por si alguna persona quiere usar el ataque que te indique.
__________________
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 21/09/2009, 15:45
Avatar de lucasphp  
Fecha de Ingreso: mayo-2009
Ubicación: Misiones
Mensajes: 170
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: htmlentities duda

Perdón por revivir el tema, pasa que no lo encontraba XD.
Voy a pasar entonces mysql_real_escape_string pero me queda una duda todavía.
Textualmente, cuando ingreso a la caja esto "<script>alert("ja");</script>" en la base de datos se almacena así: "&amp;lt;script&amp;gt;alert(&amp;quot;ja&amp;quot ;);&amp;lt;/script&amp;gt;"
y cuando paso html_entity_decode en la pantalla principal se imprime así: "<script>alert("ja");</script>" no me tira el mensaje "ja". ¿puedo tener problemas de seguridad en ese caso?
  #4 (permalink)  
Antiguo 21/09/2009, 16:02
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, 11 meses
Puntos: 1517
Respuesta: htmlentities duda

Busca sobre ataques XSS para que te instruyas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 21/09/2009, 16:55
Avatar de lucasphp  
Fecha de Ingreso: mayo-2009
Ubicación: Misiones
Mensajes: 170
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: htmlentities duda

Cita:
Iniciado por abimaelrc Ver Mensaje
Busca sobre ataques XSS para que te instruyas.
Busqué sobre el tema.
En el post anterior me dijiste "No debes html_entity_decode al texto ya que si lo haces en la pantalla va a salir un alert." Precisamente lo pregunté de nuevo porque eso no me pasa. Se imprime todo como texto.
  #6 (permalink)  
Antiguo 21/09/2009, 16:58
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: htmlentities duda

Copia tu código, para ver mejor porque pasa D:
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #7 (permalink)  
Antiguo 21/09/2009, 17:02
Avatar de lucasphp  
Fecha de Ingreso: mayo-2009
Ubicación: Misiones
Mensajes: 170
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: htmlentities duda

Cita:
Iniciado por spider_boy Ver Mensaje
Copia tu código, para ver mejor porque pasa D:
arriba copie, es simplemente un text en el que se inserta código de javascript. Antes de ingresarlo a la base de datos lo paso por htmlentities y después para mostrarlo uso html_entity_decode. Cuando lo muestro con html_entity_decode no se ejecuta el script insertado en el text, sino que se imprime como texto.
La pregunta es ¿existe la posibilidad de que se ejecute como código si uso este método?
  #8 (permalink)  
Antiguo 21/09/2009, 17:06
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: htmlentities duda

Cuando envías el mensaje, primero lo pasas por htmlentities, y luego lo imprimes habiéndolo pasador por html_entity_decode? Te fijaste si estás pasándolo por otra función que podría estar parséandolo? Mejor que postees el código, pero no el que ya pusiste, sino el que sanea el dato.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #9 (permalink)  
Antiguo 21/09/2009, 17:07
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, 11 meses
Puntos: 1517
Respuesta: htmlentities duda

¿Como se esta almacenando enl a base de datos?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 21/09/2009, 17:09
Avatar de lucasphp  
Fecha de Ingreso: mayo-2009
Ubicación: Misiones
Mensajes: 170
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: htmlentities duda

Cita:
Iniciado por spider_boy Ver Mensaje
Cuando envías el mensaje, primero lo pasas por htmlentities, y luego lo imprimes habiéndolo pasador por html_entity_decode? Te fijaste si estás pasándolo por otra función que podría estar parséandolo? Mejor que postees el código, pero no el que ya pusiste, sino el que sanea el dato.
estaba usando esto pasa sanar la variable
Código PHP:
function m($cadena){
$cadena=str_replace("<","&lt;",$cadena);
$cadena=str_replace(">","&gt;",$cadena);
$cadena=str_replace("$","",$cadena);
$cadena=str_replace("\"","&quot;",$cadena);
$cadena=str_replace("*","",$cadena);
$cadena=htmlentities($cadena);
return 
$cadena;} 
y esto para mostrar:
Código PHP:
function d($cadena){
$cadena=html_entity_decode($cadena);
return 
$cadena;} 
se me olvidó mencionar el str_replace XD
  #11 (permalink)  
Antiguo 21/09/2009, 17:12
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, 11 meses
Puntos: 1517
Respuesta: htmlentities duda

Cuando lo imprimas, mira el codigo fuente a ver si te los trae como &lt; o como <. Yo trate esto y si funciona
Código PHP:
Ver original
  1. <?php
  2. $v = "&lt;a&gt;";
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 21/09/2009, 17:28
Avatar de lucasphp  
Fecha de Ingreso: mayo-2009
Ubicación: Misiones
Mensajes: 170
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: htmlentities duda

en el código de fuente aparece así: &lt;script&gt;alert(&quot;ja&quot;);&lt;/script&gt;
  #13 (permalink)  
Antiguo 21/09/2009, 20:08
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, 11 meses
Puntos: 1517
Respuesta: htmlentities duda

Primero no necesitas los str_replace, eso lo hace htmlentities.
Segundo ¿como tu usas las funciones? Podrías poner un ejemplo para poder indicarte que esta pasando.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #14 (permalink)  
Antiguo 22/09/2009, 02:14
Avatar de DjMiki  
Fecha de Ingreso: octubre-2007
Ubicación: Paijan - Trujillo - La Libertad
Mensajes: 90
Antigüedad: 16 años, 6 meses
Puntos: 2
De acuerdo Respuesta: htmlentities duda

Bueno LucasPHP, es simple solo cuando guardes en la bd, haces la convercion con htmlentities, y normal, al momento de imprimirlo en la pagina, saldra el codigo que te ayan puesto normal, y no abra ningun problema.
  #15 (permalink)  
Antiguo 22/09/2009, 05:23
Avatar de lucasphp  
Fecha de Ingreso: mayo-2009
Ubicación: Misiones
Mensajes: 170
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: htmlentities duda

Cita:
Iniciado por DjMiki Ver Mensaje
Bueno LucasPHP, es simple solo cuando guardes en la bd, haces la convercion con htmlentities, y normal, al momento de imprimirlo en la pagina, saldra el codigo que te ayan puesto normal, y no abra ningun problema.
claro, no existe posibilidad de que se imprima script alguno, porque primero paso str_replace, lo convierto y html entities lo vuelve a convertir XD.
Gracias, por aclararme la duda. Saludos!
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 21:45.