Seguridad contra ataques de XSS

Iniciado por Yaldabaot, 13 Agosto 2013, 23:37 PM

0 Miembros y 1 Visitante están viendo este tema.

GenR_18

Cita de: drvy en 14 Agosto 2013, 17:38 PM
Si utiliza un hosting compartido, no puede actualizar su php...

Saludos

Por eso comenté que lo actualizara (si es que puede), PHP4 tiene algunas vulnerabilidades, no sirve de nada tener el código seguro si la versión es vulnerable...

Yaldabaot

Hubo un error de interpretación y estamos usando acá PHP 5.3 con MYSQL 5.

He usado este tipo de filtrado:

filter_var($buscar, FILTER_SANITIZE_STRING,FILTER_SANITIZE_SPECIAL_CHARS);

$tags = htmlentities($tags,ENT_QUOTES,"UTF-8");

Junto el mencionado que puse arriba y otro método que agregan strips.

Agregué un replace con algunos caracteres:

$tags = str_replace('=','',$tags);

El test me dice que no tengo vulnerabilidades pero se cae el test xD.
Nunca me contestan -_-

Tersk

Hola! yo ando como tú algo "perdido" con el tema de la seguridad de inyecciones y XSS.
Lo que comentan los compañeros o en el ejemplo que veo que has puesto lo que veo es que se pierde información.
Imagenemos que un usuario necesita poner un "<h1>" o un "=" en el campo que vayas a emplear eso... mediante el replace lo eliminas, y mediante los filtros tambien eliminas según que caracteres.

No sé, no lo veo una solucón eficaz capar así una web en caso de ocurrir eso.
Debe haber algo que no sea eliminar las ",',= etc etc de nuestra vida, no sé XD

Yo abrí no hace mucho un post al respecto con poco resultado, a mi lo que se me ocurre es que al usar las prepared statement nos aseguramos unas querys seguras en la bd... por lo que ahora el problema radica en mostrar esos datos desde la bd... y mediante un htmlspecialchars ó un htmlentities debería bastar para evitar los XSS ¿no? :S.

Yaldabaot

Hola Tersk, en mi caso no es necesario que los usuarios pongan tags, ";", "/" o "=", dado que estos caracteres no son necesarios con el tipo de información que manejo. Simplemente es un buscador de un cierto tipo de información.

Por ende esos caracteres "están de más", al final de cuentas use los replace, htmlentities,ENT_QUOTES, un método para eliminar los "magic_quotes" y espace_real_strings, con respecto a las inyecciones ya habían hecho un testing de lo mismo y estamos bien, únicamente fallamos con XSS.

Nunca está de más usar medidas, no sabes con que tipos de usuarios te topes en la red, yo trato al menos de ser cauteloso, pero se que será fácil romper con la seguridad, puesto que soy un novato en esto, pero al menos haré un poco difícil la tarea. He testeado y los caracteres "no se escapan", espero que sirva.
Nunca me contestan -_-

GenR_18

No hay necesidad de "eliminar las comillas de nuestras vidas", simplemente vamos a escaparlas , busca bien en la documentación de php.net lo que hacen las funciones htmlentities y htmlspecialchars, no es sólo usarlas y ya, ahi que saber cómo funcionan...

Salu2!!

Yaldabaot

Cita de: GenR_18 en 19 Agosto 2013, 18:36 PM
No hay necesidad de "eliminar las comillas de nuestras vidas", simplemente vamos a escaparlas , busca bien en la documentación de php.net lo que hacen las funciones htmlentities y htmlspecialchars, no es sólo usarlas y ya, ahi que saber cómo funcionan...

Salu2!!

Hola, en mi caso "Las comillas de mi vida" son innecesarias en mi web, puesto que no se realiza la búsqueda con "'", inclusive codificarlas lo he probado incontables veces me ha alivianado un poco contra XSS e inyección SQL, puesto que el ataque (aveces) viene con "'". Gracias por la respuesta.
Nunca me contestan -_-

peter1958

estoy utilizando PHP 5.3.13 al ocupar esta clase inputFilter de esta manera:
<?php
require_once 'class/class.inputfilter.php';
$limpia = new InputFilter(array('a','hr','div'),array('href','target','id'));

/*$hola = '<script type="text/javascript">alert("Hola a todos");</script>';
$hola = $limpia->process($hola);
echo $hola;*/
$vinculo = '<a href="www.google.cl" target="_blank">Buscador</a><hr><div id="prueba">Prueba</div>';
$vinculo = $limpia->process($vinculo);
echo $vinculo;
?>
utilizando array de tag, da el siguiente error: -> Deprecated: Function eregi() is deprecated in C:\wamp\www\php_poo_cc\video29\class\class.inputfilter.php on line 203
aconsejeme para solucionar esto
gracias

#!drvy

eregi() esta obsoleto desde la 5.2 o algo asi. Utiliza stristr().

Saludos