Ver Mensaje Individual
  #9 (permalink)  
Antiguo 16/03/2010, 06:23
Avatar de pateketrueke
pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Filtro para Evitar XSS ayuda

Cita:
Iniciado por xosgon Ver Mensaje
Comprendo, no obstante en el código que pongo arriba del acceso al admin, en una ocasión escribiendo algo como ´0=0´dejaba entrar dando igual el usuario que pongas, en tehoria lo solucionaron, pero no estoy seguro, yo probe hace un rato y saltaba un error de apache que decia:


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/.. on line 21
no, en realidad los backticks ` solo sirven para nombrar las columnas y tablas en MySQL y similares...

si tu haces eso definitivamente es un error de sintaxis SQL, porque no se trata de ningún nombre de columna, etc...

Cita:
Iniciado por xosgon Ver Mensaje
Evidentemente lo que más me urge securizar es ese login del admin.

Por otro lado mi aplicación tiene las register globals en ON, esto en que afecta a la seguridad de la web...?
si, es un grave error... lo mejor es trabajar con dicha opción deshabilitada...


ahora... simplemente debes escapar tus variables antes de usarlas... con las funciones definidas para ello (consulta el manual)
Código PHP:
$foo $_GET['bar']; // ' OR 1=1 OR '
$sql "SELECT * FROM tabla WHERE baz='buzz' AND candy='$foo'";
/* SELECT * FROM tabla WHERE baz='buzz' AND candy='' OR 1=1 OR '' */

$foo addslashes($foo); // \' OR 1=1 OR \'
$sql "SELECT * FROM tabla WHERE baz='buzz' AND candy='$foo'";
/* SELECT * FROM tabla WHERE baz='buzz' AND candy='\' OR 1=1 OR \'' */ 
otro caso sencillo es al usar valores INT, lo correcto sería hacer el typecasting necesario...
Código PHP:
$foo = (int) $_GET['bar']; // 13x
$sql "SELECT * FROM tabla WHERE id=$foo";
/* SELECT * FROM tabla WHERE id=13 */ 
al hacer esto aseguramos la integridad y tipo de datos, es un método fiable... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 16/03/2010 a las 06:32 Razón: ejemplos