Título: Cual es el procedimiento mas efectivo para evitar XSS? Publicado por: exploiterstack en 27 Enero 2015, 11:12 am Hola a toda la comunidad,
Hoy vengo con una duda que después de buscar no llego a una conclusión concreta, dicha duda que me inquieta es a la hora de realizar filtros para evadir los ataques conocidos como XSS. Tras leer y leer me encontrado con una serie de métodos que puede que nos ayuden a crear un sistema lo suficientemente seguro como para de momento respirar un poco mas tranquilos ante estos ataques, dichos métodos que he visto son los siguientes: htmlspecialchars addslashes stripslashes htmlspecialchars ...... Pero lo que si que es verdad es que la gran mayoría de los post que hablan de ello y de como han de ser utilizados ya son algo antiguos y quisiera saber cuales son los métodos/técnicas mas efectivos hoy en día. He visto que lo mas efectivo para los inputs de un formulario es recoger el dato haciendo uso de la siguiente concatenación y haciendo uso de la constante ENT_QUOTES: addslashes(htmlspecialchars($_POST['texto'], ENT_QUOTES)); Pero como digo esto no es nada nuevo si observamos la fecha de algunos post de los que habla este foro sobre estos temas. Espero que me podáis ayudar con este tema, un saludo! ;) Título: Re: Cual es el procedimiento mas efectivo para evitar XSS? Publicado por: el-brujo en 27 Enero 2015, 11:47 am Código
Código
Usar FILTER_SANITIZE_STRING FILTER_SANITIZE_SPECIAL_CHARS (. Equivalente a llamar a la función htmlspecialchars().) Como localizar un bug XSS http://foro.elhacker.net/seguridad/como_localizar_un_bug_xss-t389569.0.html Muy viejo, del 2007: Código PHP AntiXSS http://foro.elhacker.net/hacking_avanzado/codigo_php_antixss-t174415.0.html 2006: evitar XSS en eval() http://foro.elhacker.net/nivel_web/evitar_xss_en_eval-t274302.0.html WHK debería actualizar su guía: Recopilatorio de Filtros, Casting y Parsing para PHP http://foro.elhacker.net/php/recopilatorio_de_filtros_casting_y_parsing_para_php-t348221.0.html Título: Re: Cual es el procedimiento mas efectivo para evitar XSS? Publicado por: exploiterstack en 27 Enero 2015, 12:10 pm Hola el-brujo,
Entiendo que las tres opciones que presentas arriba son las mas efectivas hasta el dia de hoy. Pero quiero entender que es lo que hace realmente, por ejemplo no entiendo los parámetros después de la barra que le pasas a htmlspecialchars: htmlspecialchars($data,ENT_QUOTES | ENT_HTML401,$encoding); Se que a $encoding le asignas la cadena 'UTF-8' en la lista de parámetros de la función xssafe. Si fueras tan amable de explicarme lo que hace lo subrayado en negrita te lo agradecería. Espero su respuesta, a y se me olvidaba tremendo aporte! ;) Título: Re: Cual es el procedimiento mas efectivo para evitar XSS? Publicado por: Shell Root en 27 Enero 2015, 14:09 pm Código ENT_HTML401 Maneja el código como HTML 4.01. :http://php.net/manual/es/function.htmlspecialchars.php Título: Re: Cual es el procedimiento mas efectivo para evitar XSS? Publicado por: exploiterstack en 27 Enero 2015, 14:38 pm Se puede decir que la función htmlspecialchars() es mas segura empleando los parámetros que pone el-brujo que esta que propuse yo?
addslashes(htmlspecialchars($_POST['texto'], ENT_QUOTES)); De ser así en que se diferencia? se podría decir que la que el propone es lo ultimo de lo ultimo? de ser así el nivel de seguridad seria alto? Espero su respuesta, un saludo! ;) Título: Re: Cual es el procedimiento mas efectivo para evitar XSS? Publicado por: exploiterstack en 28 Enero 2015, 09:55 am Por lo que entiendo y las pruebas que he realizado es lo siguiente:
htmlspecialchars(): Este método me va a mantener todos los tags que el usuario introduzca junto al texto, pero este texto no cogerá formato cuando lo muestre por pantalla, así como el javascript. htmlentities() : Este método tiene como finalidad no escapar los tags, directamente lo que hace es suprimirlos, con lo que el código HTML/javascript que el usuario introduzca no se mantendrá. addslashes() : Este método tiene como finalidad suprimir todos las comillas dobles y simples(',"). Pero tengo entendido que se pueden saltar fácilmente haciendo su equivalencia en otro tipo de codificación como por ejemplo el código ASCII. MAGIC_QUOTES : Activar esta directiva en el servidor tengo entendido que es totalmente des aconsejable por el mismo motivo que antes visto con el método addslashes(). Se me escapa algo? Espero vuestra respuesta, saludos! ;) |