Foros del Web » Programando para Internet » PHP »

html entities vs strip_tags

Estas en el tema de html entities vs strip_tags en el foro de PHP en Foros del Web. Cual de las dos me recomendais para evitar ataques Xss? he leido un poco sus diferencias pero nose...las veo bastante iguales.......yo en mi caso tengo ...
  #1 (permalink)  
Antiguo 07/06/2008, 09:02
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 6 meses
Puntos: 2
html entities vs strip_tags

Cual de las dos me recomendais para evitar ataques Xss? he leido un poco sus diferencias pero nose...las veo bastante iguales.......yo en mi caso tengo pensado NO PERMITIR NINGUN TIPO DE ETIQUETA........ entonces....me decantaria por el strip_tags ya que lo veo mas limpito.....ya que el html entitities......me sustitutye las etiquetas por su entidad equivalente mientras que strip_tags simpelement me lo elimina las etiquetas?

Que opinan? es alguna de ellas mas segura que la otra?

Un saludo
  #2 (permalink)  
Antiguo 07/06/2008, 09:20
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Respuesta: html entities vs strip_tags

Hola:

Siempre depende de qué uso le vas a dar. Si en el texto que ingresan, los usuarios necesitan que veas algo de html, no puedes utilizar strip_tags(). Por ejemplo, en un foro de HTML, el usuario envía:

Hola, tengo un problema con el siguiente código:
<head>
<title>El título de mi página</title>
</head>

Solamente se guardaría:
El título de mi página

Y eso no serviría para nada.

Saludos,
  #3 (permalink)  
Antiguo 07/06/2008, 10:37
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 6 meses
Puntos: 2
Respuesta: html entities vs strip_tags

valep pero como no quiero guardar nada d eso...me serviria la otra,no?
  #4 (permalink)  
Antiguo 07/06/2008, 10:59
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: html entities vs strip_tags

Hola blade_stom

el otro dia me recomendaron una web, no me acuerdo ahora, donde venia informacion sobre los ataques XSS y saque de alli esta funcion para evitarlos

Código PHP:
function RemoveXSS($val) { 
   
// remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed 
   // this prevents some character re-spacing such as <java\0script> 
   // note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs 
   
$val preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/'''$val); 
    
   
// straight replacements, the user should never need these since they're normal characters 
   // this prevents like <IMG SRC=&#X40&#X61&#X76&#X61&#X73&#X63&#X72&#X69&#X70&#X74&#X3A&#X61&#X6C&#X65&#X72&#X74&#X28&#X27&#X58&#X53&#X53&#X27&#X29> 
   
$search 'abcdefghijklmnopqrstuvwxyz'
   
$search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
   
$search .= '1234567890!@#$%^&*()'
   
$search .= '~`";:?+/={}[]-_|\'\\'
   for (
$i 0$i strlen($search); $i++) { 
      
// ;? matches the ;, which is optional 
      // 0{0,7} matches any padded zeros, which are optional and go up to 8 chars 
    
      // &#x0040 @ search for the hex values 
      
$val preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i'$search[$i], $val); // with a ; 
      // &#00064 @ 0{0,7} matches '0' zero to seven times 
      
$val preg_replace('/(&#0{0,8}'.ord($search[$i]).';?)/'$search[$i], $val); // with a ; 
   

    
   
// now the only remaining whitespace attacks are \t, \n, and \r 
   
$ra1 = Array('javascript''vbscript''expression''applet''meta''xml''blink''link''style''script''embed''object''iframe''frame''frameset''ilayer''layer''bgsound''title''base'); 
   
$ra2 = Array('onabort''onactivate''onafterprint''onafterupdate''onbeforeactivate''onbeforecopy''onbeforecut''onbeforedeactivate''onbeforeeditfocus''onbeforepaste''onbeforeprint''onbeforeunload''onbeforeupdate''onblur''onbounce''oncellchange''onchange''onclick''oncontextmenu''oncontrolselect''oncopy''oncut''ondataavailable''ondatasetchanged''ondatasetcomplete''ondblclick''ondeactivate''ondrag''ondragend''ondragenter''ondragleave''ondragover''ondragstart''ondrop''onerror''onerrorupdate''onfilterchange''onfinish''onfocus''onfocusin''onfocusout''onhelp''onkeydown''onkeypress''onkeyup''onlayoutcomplete''onload''onlosecapture''onmousedown''onmouseenter''onmouseleave''onmousemove''onmouseout''onmouseover''onmouseup''onmousewheel''onmove''onmoveend''onmovestart''onpaste''onpropertychange''onreadystatechange''onreset''onresize''onresizeend''onresizestart''onrowenter''onrowexit''onrowsdelete''onrowsinserted''onscroll''onselect''onselectionchange''onselectstart''onstart''onstop''onsubmit''onunload'); 
   
$ra array_merge($ra1$ra2); 
    
   
$found true// keep replacing as long as the previous round replaced something 
   
while ($found == true) { 
      
$val_before $val
      for (
$i 0$i sizeof($ra); $i++) { 
         
$pattern '/'
         for (
$j 0$j strlen($ra[$i]); $j++) { 
            if (
$j 0) { 
               
$pattern .= '('
               
$pattern .= '(&#[xX]0{0,8}([9ab]);)'
               
$pattern .= '|'
               
$pattern .= '|(&#0{0,8}([9|10|13]);)'
               
$pattern .= ')*'
            } 
            
$pattern .= $ra[$i][$j]; 
         } 
         
$pattern .= '/i'
         
$replacement substr($ra[$i], 02).'<x>'.substr($ra[$i], 2); // add in <> to nerf the tag 
         
$val preg_replace($pattern$replacement$val); // filter out the hex tags 
         
if ($val_before == $val) { 
            
// no replacements were made, so exit the loop 
            
$found false
         } 
      } 
   } 
   return 
$val

  #5 (permalink)  
Antiguo 07/06/2008, 11:27
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: html entities vs strip_tags

Gracias por la función !! agregada a mi lista de snippets
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #6 (permalink)  
Antiguo 07/06/2008, 16:05
(Desactivado)
 
Fecha de Ingreso: mayo-2008
Mensajes: 85
Antigüedad: 16 años
Puntos: 1
Respuesta: html entities vs strip_tags

htmlspecialchars es la mejor ya que htmlentities se puede esquivar
  #7 (permalink)  
Antiguo 12/10/2008, 15:09
Avatar de kopfnickend  
Fecha de Ingreso: febrero-2008
Ubicación: Bueno Aires (provincia)
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: html entities vs strip_tags

Gracias por el aporte xDDD.
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 09:38.