Foros del Web » Programando para Internet » PHP »

¿Es esto una vulnerabilidad?

Estas en el tema de ¿Es esto una vulnerabilidad? en el foro de PHP en Foros del Web. Hola buena tarde. Tengo una duda con respecto a la seguridad. Uso htmlentities y mysqli_real_escape_string para sanitizar datos a la DB, sin embargo necesito mostrar ...
  #1 (permalink)  
Antiguo 29/10/2015, 13:37
Avatar de AlejandraLara  
Fecha de Ingreso: octubre-2015
Mensajes: 115
Antigüedad: 8 años, 6 meses
Puntos: 19
Pregunta ¿Es esto una vulnerabilidad?

Hola buena tarde.
Tengo una duda con respecto a la seguridad.

Uso htmlentities y mysqli_real_escape_string para sanitizar datos a la DB, sin embargo necesito mostrar esos mismos datos pero ahora las ñ y los acentos los coloca literalmente. Intenté de todo, pero lo funcional fue colocar html_entity_decode, es decir, lo inverso a htmlentities y efectivamente muestra correctamente los datos.

Entonces, si alguien coloca una inyección (por ejemplo
Código HTML:
<script type="text/javascript">alert('ejemplo');</script> 
) cuando se almacena se escribe como sus respectivas entidades así que no hay problema, sin embargo, ¿si uso html_entity_decode ejecutará el script malicioso?
  #2 (permalink)  
Antiguo 29/10/2015, 14:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿Es esto una vulnerabilidad?

Cita:
¿si uso html_entity_decode ejecutará el script malicioso?
Pues obviamente sí, porque entonces es como si alguien escribiera ese HTML directamente y sin restricciones.

A eso se le conoce como XSS, te sugiero investigar al respecto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 29/10/2015, 16:31
Avatar de AlejandraLara  
Fecha de Ingreso: octubre-2015
Mensajes: 115
Antigüedad: 8 años, 6 meses
Puntos: 19
Respuesta: ¿Es esto una vulnerabilidad?

Ajá~

¿Alguna idea para sustituir? Preg replace?
  #4 (permalink)  
Antiguo 29/10/2015, 16:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿Es esto una vulnerabilidad?

La pregunta correcta es: ¿vas a permitir HTML en lo que introduzcan tus usuarios?

Si no entonces es muy simple, con sólo usar strip_tags() quitas todo el HTML antes de guardar.

Cita:
Uso htmlentities y mysqli_real_escape_string para sanitizar datos a la DB
Ahora, ahí cometes un error muy grave: el HTML no hace daño en la base de datos, así que "sanitizar" el HTML que va a la base de datos es una pérdida de tiempo y recursos.

El código HTML se ejecuta únicamente en el navegador, y a menos que lo imprimas no hace daño, usar htmlentities() no "sanitiza" nada.

Jamás debes alterar la naturaleza de los datos que recibes: es mala practica.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 29/10/2015, 17:33
Avatar de AlejandraLara  
Fecha de Ingreso: octubre-2015
Mensajes: 115
Antigüedad: 8 años, 6 meses
Puntos: 19
Respuesta: ¿Es esto una vulnerabilidad?

Muchas gracias por la aclaración, soy autónoma y a veces es importante aprender de todos lados. Con los cursos con los que aprendí (cuando tenía 15, ahora tengo 19) reiteraban la importancia de limpiar los datos de entrada porque mysql_escape_string no es suficiente (estoy consciente de ello).

Etiquetas: html, mysql
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:27.