Foros del Web » Programando para Internet » PHP »

como evitar los ataques xss atraves de los formularios

Estas en el tema de como evitar los ataques xss atraves de los formularios en el foro de PHP en Foros del Web. Hola, como seria la forma mas segura de evitar los ataques xss a traves de los formularios, espero sujerencias, gracias de antemano....
  #1 (permalink)  
Antiguo 19/12/2011, 05:51
 
Fecha de Ingreso: mayo-2011
Mensajes: 187
Antigüedad: 12 años, 11 meses
Puntos: 1
como evitar los ataques xss atraves de los formularios

Hola, como seria la forma mas segura de evitar los ataques xss a traves de los formularios, espero sujerencias, gracias de antemano.
  #2 (permalink)  
Antiguo 19/12/2011, 06:40
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: como evitar los ataques xss atraves de los formularios

Busqueda de google a "evitar xxs en php" primer resultado
http://blog.unijimpe.net/prevenir-ataques-xss-con-php/


¿nos ves cara de buscador?
__________________
Tengo una pregunta que a veces me tortura... ¿El loco soy yo o los locos son los demás?
  #3 (permalink)  
Antiguo 19/12/2011, 06:40
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, 10 meses
Puntos: 1517
Respuesta: como evitar los ataques xss atraves de los formularios

Te recomiendo que hagas una búsqueda en el foro para que veas varios temas que te pueden ayudar.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 19/12/2011, 07:31
 
Fecha de Ingreso: mayo-2011
Mensajes: 187
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: como evitar los ataques xss atraves de los formularios

Gracias a todos por la informacion, saludos.
  #5 (permalink)  
Antiguo 19/12/2011, 12:10
 
Fecha de Ingreso: mayo-2011
Mensajes: 187
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: como evitar los ataques xss atraves de los formularios

Hola, de nuevo estube buscando por el foro y encontre una funcion de gatorV bastante interesante, aunque meda un error, la funcion esta en este post:

http://www.forosdelweb.com/f18/funci...5/#post3497564





yo hago algo asin:

Código PHP:
Ver original
  1. <?php
  2. if(isset($_POST['dato'])){
  3.     $dato=$_POST['dato'];
  4.     $dato_limpio=filterXSS($dato);
  5.    
  6.    echo $dato_limpio;
  7. }
  8. ?>

Me da este error:

Parse error: syntax error, unexpected T_PRIVATE in C:\wamp\www\xss.php on line 16


Alguna idea de porque me da ese error?saludos

Última edición por tripoli; 19/12/2011 a las 12:18
  #6 (permalink)  
Antiguo 19/12/2011, 14:26
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: como evitar los ataques xss atraves de los formularios

en la funcion private function filterXSS($val) CAMBIA $DATO POR $VAL

<?php
if(isset($_POST['dato'])){
$val=$_POST['dato'];
$dato_limpio=filterXSS($val);

echo $dato_limpio;
}
?>

prueba haber
  #7 (permalink)  
Antiguo 19/12/2011, 15:22
 
Fecha de Ingreso: mayo-2011
Mensajes: 187
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: como evitar los ataques xss atraves de los formularios

El problema lo tengo en la funcion de gatorV, yo la cargo en la cabecera con un include pero me da este error:

Parse error: syntax error, unexpected T_PRIVATE

es esta linea:
Código PHP:
Ver original
  1. private function filterXSS($val) {

Alguna idea?saludos
  #8 (permalink)  
Antiguo 19/12/2011, 15:58
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: como evitar los ataques xss atraves de los formularios

te lo acabo de decir

la funciont actua con el valor de $val por eso cambia $dato a $val PRUEBALO Y NOS DICES
  #9 (permalink)  
Antiguo 19/12/2011, 16:06
 
Fecha de Ingreso: mayo-2011
Mensajes: 187
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: como evitar los ataques xss atraves de los formularios

Cita:
Iniciado por webankenovi Ver Mensaje
te lo acabo de decir

la funciont actua con el valor de $val por eso cambia $dato a $val PRUEBALO Y NOS DICES
Eso hice pero el error me da el mismo, yo probe solo de incluir la funcion sin llamarla y me da el error que postee arriba, saludos.
  #10 (permalink)  
Antiguo 19/12/2011, 16:16
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: como evitar los ataques xss atraves de los formularios

function

Código PHP:
Ver original
  1. /**
  2.          * Removes all XSS attacks that came in the input.
  3.          *
  4.          * Function taken from:
  5.          *
  6.          * http://quickwired.com/smallprojects/php_xss_filter_function.php
  7.          *
  8.          * @param mixed $val The Value to filter
  9.          * @return mixed
  10.          */
  11.         private function filterXSS($val) {
  12.             // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed
  13.             // this prevents some character re-spacing such as <java\0script>
  14.             // note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs
  15.             $val = preg_replace('/([\x00-\x08][\x0b-\x0c][\x0e-\x20])/', '', $val);
  16.      
  17.             // straight replacements, the user should never need these since they're normal characters
  18.             // 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>
  19.             $search = 'abcdefghijklmnopqrstuvwxyz';
  20.             $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  21.             $search .= '1234567890!@#$%^&*()';
  22.             $search .= '~`";:?+/={}[]-_|\'\\';
  23.             for ($i = 0; $i < strlen($search); $i++) {
  24.                 // ;? matches the ;, which is optional
  25.                 // 0{0,7} matches any padded zeros, which are optional and go up to 8 chars
  26.      
  27.                 // &#x0040 @ search for the hex values
  28.                 $val = preg_replace('/(&#[x|X]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); // with a ;
  29.                 // &#00064 @ 0{0,7} matches '0' zero to seven times
  30.                 $val = preg_replace('/(&#0{0,8}'.ord($search[$i]).';?)/', $search[$i], $val); // with a ;
  31.             }
  32.      
  33.             // now the only remaining whitespace attacks are \t, \n, and \r
  34.             $ra1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
  35.             $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');
  36.             $ra = array_merge($ra1, $ra2);
  37.      
  38.             $found = true; // keep replacing as long as the previous round replaced something
  39.             while ($found == true) {
  40.                 $val_before = $val;
  41.                 for ($i = 0; $i < sizeof($ra); $i++) {
  42.                     $pattern = '/';
  43.                     for ($j = 0; $j < strlen($ra[$i]); $j++) {
  44.                         if ($j > 0) {
  45.                             $pattern .= '(';
  46.                             $pattern .= '(&#[x|X]0{0,8}([9][a][b]);?)?';
  47.                             $pattern .= '|(&#0{0,8}([9][10][13]);?)?';
  48.                             $pattern .= ')?';
  49.                     }
  50.                     $pattern .= $ra[$i][$j];
  51.                  }
  52.                  $pattern .= '/i';
  53.                  $replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2); // add in <> to nerf the tag
  54.                  $val = preg_replace($pattern, $replacement, $val); // filter out the hex tags
  55.                  if ($val_before == $val) {
  56.                     // no replacements were made, so exit the loop
  57.                     $found = false;
  58.                  }
  59.               }
  60.             }
  61.      
  62.             return $val;
  63.         }


tu script

Código PHP:
Ver original
  1. <?php
  2.     if(isset($_POST['dato'])){
  3.         $val=$_POST['dato'];
  4.         $dato_limpio=filterXSS($val);
  5.        
  6.        echo $dato_limpio;
  7.     }
  8.     ?>

asi dices que te da error?
  #11 (permalink)  
Antiguo 19/12/2011, 16:27
 
Fecha de Ingreso: mayo-2011
Mensajes: 187
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: como evitar los ataques xss atraves de los formularios

webankenovi si asin me da error, la linea que comente arriba, alguna idea?


el problema lo tengo en el inicio de la funcion en el private, alguna idea?
  #12 (permalink)  
Antiguo 19/12/2011, 22:50
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: como evitar los ataques xss atraves de los formularios

La confusión de webankenovi es muy común. El nombre que le das a una variable local en una función, es solo para esa función, no para código externo. Lo que tiene tripoli está correcto, el problema es que copió y pegó, ni se fijó que el ejemplo de GatorV es un método, no una función. Pero es tan simple como quitar 'private' antes de 'function'.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #13 (permalink)  
Antiguo 21/12/2011, 05:06
 
Fecha de Ingreso: mayo-2011
Mensajes: 187
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: como evitar los ataques xss atraves de los formularios

Hola spider_boy, en principio gracias por tu colaboracion, no habia caido en eso, saludos.

Etiquetas: ataques, formulario, 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 02:11.