Código PHP AntiXSS

Iniciado por 19.5, 30 Julio 2007, 02:01 AM

0 Miembros y 3 Visitantes están viendo este tema.

Azielito

Yo tengo una funcion, y no se si aplicando esta ya estoy libre de XSS y RFI y esas cosas xD
Código (php) [Seleccionar]
# Funcion para limpiar caracte-
# res que pudieran comprometer
# al servidor y/o al usuario
# By: Azielito
function limpia($var){
//$var = strip_tags($var);
$malo = array("\\","\'","'","%",";",":","&","#"); // Aqui poner caracteres no permitidos
$i=0;$o=count($malo);
while($i<=$o){
$var = str_replace($malo[$i],"",$var);
$i++;
}
return $var;
}

# Funcion que aplica la funcion anterior
# para no tener que preocuparnos por
# ataques de XSS o SQLi
function LimpiarTodo($datos){
if(is_array($datos)){
$datos = array_map('limpia',$datos);
}else{
die("<span class=\"error\">La funcion <b>LimpiarTodo</b> debe contener un arreglo.</span>");
}
return $datos;
}

// Solo limpio get y post, tambien podes limpiar las $_COOKIE, $_SESSION, $_REQUES y todas esas
if($_POST){
$_POST =& LimpiarTodo($_POST);
}
if($_GET){
$_GET =& LimpiarTodo($_GET);
}


Pos eso, se podria saltar esta 'preotccion' ?

yeikos

#21
Sí, pero así no vamos a avanzar nunca, creando funciones que ya existe y cometiendo los mismos errores una y otra vez... esperad, tengo una idea...

Citarfunction fncEcho($str) {
echo $str;
}


Crack_X

Azielito tu funcion hace casi lo mismo que la primera que publicaron a excepcion que no limpias "<" ni ">" ni un ".  Quieren evitar un sql injection?  Codifiquen todo en base64 y luego introduscanlo xD
Shit loads of money spend to show us wrong from right. Say no to war


Yasser Has Things To Say
WarZone

sirdarckcat

Cita de: Crack_X en  1 Agosto 2007, 19:41 PM
Azielito tu funcion hace casi lo mismo que la primera que publicaron a excepcion que no limpias "<" ni ">" ni un ". Quieren evitar un sql injection? Codifiquen todo en base64 y luego introduscanlo xD
nahhhhhhhhhhhh eso tenia pensado hacer en warzone y no se entendia nada desde el phpmyadmin.. (aunque a estas alturas, igual no se entiende nada xD, pero las pruebas, rangos, y esas cosas aveces si hay que modificarlas desde ahi.. me da flojera mejorar el panel xD)

19.5

Cita de: yeikos en  1 Agosto 2007, 19:36 PM
Sí, pero así no vamos a avanzar nunca, creando funciones que ya existe y cometiendo los mismos errores una y otra vez... esperad, tengo una idea...

Citarfunction fncEcho($str) {
echo $str;
}


eeeeh.. pero el echo no libra de un XSS :rolleyes:
Además no existen funciones ya creadas para todas las codificaciones existentes. Uuuhm... quisas el talón de aquiles no esta en bypassear el filtro de la función sino en "saltarse" la función misma... Puede ser, si existe algún bug relacionado con el núcleo de PHP. Es una idea que me surgio ahora...

yeikos

#25
Parece que mi ironía fue difícil de captar...

Lo que realmente quería decir es que os dedicáis a reinventar lo inventado, o lo que es lo mismo, malgastar el tiempo...


Citar
Además no existen funciones ya creadas para todas las codificaciones existentes.

htmlentities() soporta ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252, KOI8-R, BIG5, GB2312, BIG5-HKSCS, Shift_JIS, EUC-JP, que más quieres, ¿braile?

Citar
quisas el talón de aquiles no esta en bypassear el filtro de la función sino en "saltarse" la función misma... Puede ser, si existe algún bug relacionado con el núcleo de PHP

Aquí no hay talón de aquiles, tan solo hay que concienciar al programador para que haga su trabajo correctamente, desprendiéndose de estos malos hábitos de crear funciones para corregir nuestros propios errores.

No se como te atreves a decir que el problema de los ataques XSS reside en el interior del núcleo de PHP...

Azielito

Pero, cuando necesitas recuperar mas de 20 campos? xD y quieres que algunos caracteres puedan pasar pero otros no? [...]

es algo dificil de explicar >_<

19.5

Cita de: yeikos en  2 Agosto 2007, 01:47 AM
Parece que mi ironía fue difícil de captar...

Lo que realmente quería decir es que os dedicáis a reinventar lo inventado, o lo que es lo mismo, malgastar el tiempo...


Citar
Además no existen funciones ya creadas para todas las codificaciones existentes.

htmlentities() soporta ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252, KOI8-R, BIG5, GB2312, BIG5-HKSCS, Shift_JIS, EUC-JP, que más quieres, ¿braile?

Citar
quisas el talón de aquiles no esta en bypassear el filtro de la función sino en "saltarse" la función misma... Puede ser, si existe algún bug relacionado con el núcleo de PHP

Aquí no hay talón de aquiles, tan solo hay que concienciar al programador para que haga su trabajo correctamente, desprendiéndose de estos malos hábitos de crear funciones para corregir nuestros propios errores.

No se como te atreves a decir que el problema de los ataques XSS reside en el interior del núcleo de PHP...
Es cierto que los hábitos de programación se tienen que corregir. Pero aún así SIEMPRE habrán errores internos de la misma programación del lenguaje. Y sabes por qué? Porque fue creado por humanos...
No faltará el investigador que sea capáz de saltar htmlentities, por eso existe la necesidad de crear funciones propias para asegurarse en lo propio y no en lo ajeno.

Salu2!

yeikos

Los fallos de los que tu hablas causan el desbordamiento del buffer, y si nos ponemos así pues creamos nuestro propio lenguaje por que lo que veo tienes miedo a usar las funciones nativas que trae PHP...

19.5

Miedo? Quién hablo de miedo? Bueno... esto se esta yendo para otro lado...
Yo creo que siempre es mejor asegurarse de lo propio. Por eso mi interes en hacer una función propia y, ademas analizar el código de aquella ya publicada.

Repito, propongo estudiar la función anterior por si hubiera alguna falla. Y para las/los osadas/dos publicar alguna función que pretenda superar aquella. O la que publique en un principio ;D

Aveces las cosas mas complejas son las que traen mayores problemas...