Foros del Web » Programando para Internet » PHP »

Las funciones que evitan el XSS tambien evita inyección HTML?

Estas en el tema de Las funciones que evitan el XSS tambien evita inyección HTML? en el foro de PHP en Foros del Web. T engo esta funcion en php que fue diseñada para evitar los ataques XSS, esta funcion evita tambien los ataques inyección HTML? la funcion es ...
  #1 (permalink)  
Antiguo 06/02/2013, 18:15
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Pregunta Las funciones que evitan el XSS tambien evita inyección HTML?

Tengo esta funcion en php que fue diseñada para evitar los ataques XSS, esta funcion evita tambien los ataques inyección HTML?


la funcion es esta :

Código PHP:
Ver original
  1. function sacarXss($val) {
  2.    $val = preg_replace('/([\x00-\x08][\x0b-\x0c][\x0e-\x20])/', '', $val);
  3.    $search = 'abcdefghijklmnopqrstuvwxyz';
  4.    $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  5.    $search .= '1234567890!@#$%^&*()';
  6.    $search .= '~`";:?+/={}[]-_|\'\\';
  7.    for ($i = 0; $i < strlen($search); $i++) {
  8.       $val = preg_replace('/(&#[x|X]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); // with a ;
  9.       $val = preg_replace('/(�{0,8}'.ord($search[$i]).';?)/', $search[$i], $val); // with a ;
  10.    }
  11.    $ra1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
  12.    $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');
  13.    $ra = array_merge($ra1, $ra2);
  14.    $found = true;  
  15.    while ($found == true) {
  16.       $val_before = $val;
  17.       for ($i = 0; $i < sizeof($ra); $i++) {
  18.          $pattern = '/';
  19.          for ($j = 0; $j < strlen($ra[$i]); $j++) {
  20.             if ($j > 0) {
  21.                $pattern .= '(';
  22.                $pattern .= '(&#[x|X]0{0,8}([9][a][b]);?)?';
  23.                $pattern .= '|(�{0,8}([9][10][13]);?)?';
  24.                $pattern .= ')?';
  25.             }
  26.             $pattern .= $ra[$i][$j];
  27.          }
  28.          $pattern .= '/i';
  29.          $replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2);
  30.          $val = preg_replace($pattern, $replacement, $val);
  31.          if ($val_before == $val) {
  32.             $found = false;
  33.          }
  34.       }
  35.    }
  36.   return $val;
  37. }
  #2 (permalink)  
Antiguo 06/02/2013, 19:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Las funciones que evitan el XSS tambien evita inyección HTML?

No, esa función es sólo para evitar XSS, para evitar inyección SQL puedes ver esta guía: http://www.forosdelweb.com/f18/aport...8/#post4265377
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 06/02/2013, 19:29
Avatar de xIamAlex  
Fecha de Ingreso: abril-2012
Ubicación: Venezuela
Mensajes: 118
Antigüedad: 11 años, 10 meses
Puntos: 23
Respuesta: Las funciones que evitan el XSS tambien evita inyección HTML?

Por lo que veo creo que no.

Yo une vez agarré una función para evitar ataques XSS proporcionada por Gator (muy agradecido) en uno de los hilos de este foro, y lo único que hacía era evitar código javascript y flash (creo), del resto el código HTML seguía igual ya que se podía tomar en cuenta como código "inofensivo".

Esto es útil para desarrolladores que quieran hacer servicios de tipo Blogging, o algo por el estilo, o que simplemente dejen al usuario escribir código HTML en comentarios, etc..

En fin, si lo que quieres es evitar 100% cualquier tipo de código HTML, aquí te dejo una función que fabriqué desde entonces, es muy sencilla..

Código PHP:
<?php
    
    
function FilterXSS($String)
    {
        
$Find = array('&''<''>''=''"''\'');
        
$Replace = array('& #38;''& #60;''& #62;''& #61;''& #34;''& #39;'); /* Borra los espacios :P */
        
        
$String str_replace($Find$Replace$String);
        
        return 
$String;
    }
    
?>
Simplemente reemplaza cualquier caracter que permita formar código HTML en sí, y a su vez evitar sus entidades, saludos espero que te sirva.

Te sugiero que hagas el reemplazo DESPUÉS de que saques la información de la base de datos y NO ANTES de introducirla.
__________________
Las personas quieren autos, casas, teléfonos, dinero, poder, ser famosos, parejas, en fin.. yo solo quiero ser libre y feliz.
  #4 (permalink)  
Antiguo 06/02/2013, 21:20
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Respuesta: Las funciones que evitan el XSS tambien evita inyección HTML?

Cita:
Iniciado por Triby Ver Mensaje
No, esa función es sólo para evitar XSS, para evitar inyección SQL puedes ver esta guía: http://www.forosdelweb.com/f18/aport...8/#post4265377

YA tengo una funcion para evitar inyección SQL, lo que me interesa es evitar los inyeccions HTML.
  #5 (permalink)  
Antiguo 06/02/2013, 21:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Las funciones que evitan el XSS tambien evita inyección HTML?

Pues deberías saber que a lo que le llamas inyección de HTML es en realidad XSS, si investigas adecuadamente lo descubrirás.

Y únicamente con usar htmlspecialchars() o strip_tags() bastaría, si es que sabes lo que hacen.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 06/02/2013, 21:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Las funciones que evitan el XSS tambien evita inyección HTML?

Ouch! sorry!

Entonces, en ese mismo enlace, revisa el primer mensaje del tema partes 2ª y 3ª, además, si vas a permitir alguna etiqueta de html, también esto: http://www.forosdelweb.com/f18/aport...-html-1007806/
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: html, inyección, xss
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 19:02.