IF dependiendo si hay ID

Iniciado por viher, 14 Septiembre 2010, 02:41 AM

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

Franki

Si estas utilizando MySQL mejor utiliza mysql_real_escape_string(), es mucho más eficiente y seguro que utilizar addslashes. Addslashes solo lo utilizaria si el gestor de base de datos no tiene una funcion propia para limpiar entradas.

http://www.php.net/manual/es/function.mysql-real-escape-string.php

Ahi te explica como usarla.

tragantras

Cita de: Franki en 14 Septiembre 2010, 20:52 PM
Si estas utilizando MySQL mejor utiliza mysql_real_escape_string(), es mucho más eficiente y seguro que utilizar addslashes. Addslashes solo lo utilizaria si el gestor de base de datos no tiene una funcion propia para limpiar entradas.

http://www.php.net/manual/es/function.mysql-real-escape-string.php

Ahi te explica como usarla.

muy acertada decisión

Cita de: Shell Root
Cof, cof. Que porque es un foro de "hacking", siempre tenemos que hablar de eso?. A ver que le sacas al subforo "Diseño Gráfico".

no, simplemente creo que una programación segura se debe de tener "interiorizada" uno no programa aplicaciones seguras segun el foro en el que escribe, uno solo debe saber programar aplicacioens seguras... xD

espero que no lo tomes a mal, las ultimas correciones que te he hecho siempre te las tomabas a la tremenda...

un saludo ppl

pd: viher puedes hacer un include de ese php en cada archivo y listo
Colaboraciones:
1 2

~ Yoya ~

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

jdc

Mejor usa id como entero y que menor o igual que 0 se jodan...

(int)$_GET['id']

Listo invulnerable...

Recuerda comprobar sí es menor o igual a 0 error, también puedes usar un mayor que x error también para que no te ahoguen la variable. Sí vas a usar variables con letras preocupate con lo que han mencionado.

Saludos

viher

ya he hecho en todas mis páginas un include al archivo con el siguiente código:

Código (php) [Seleccionar]
<?php
function addslashes__recursive($var){
if (!
is_array($var))
return 
addslashes($var);
$new_var = array();
foreach (
$var as $k => $v)$new_var[addslashes($k)]=addslashes__recursive($v);
return 
$new_var;
}
$_POST=addslashes__recursive($_POST);
$_GET=addslashes__recursive($_GET);
$_REQUEST=addslashes__recursive($_REQUEST);
$_SERVER=addslashes__recursive($_SERVER);
$_COOKIE=addslashes__recursive($_COOKIE);
?>


y con ésto ya limpio mi ID siempre y no hay ya ninguna fallo de seguridad,no es cierto? gracias

Shell Root

Si es un ID supongo que es numerico, porque no te pasaste por la sección de  Bugs y Exploits - Nivel Web, para ver como evitarlo?
:http://foro.elhacker.net/nivel_web/temas_mas_destacados_fallas_y_explotaciones_a_nivel_web_actualizado_31510-t244090.0.html
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

~ Yoya ~

Cita de: viher en 15 Septiembre 2010, 03:36 AM
ya he hecho en todas mis páginas un include al archivo con el siguiente código:

Código (php) [Seleccionar]
<?php
function addslashes__recursive($var){
if (!
is_array($var))
return 
addslashes($var);
$new_var = array();
foreach (
$var as $k => $v)$new_var[addslashes($k)]=addslashes__recursive($v);
return 
$new_var;
}
$_POST=addslashes__recursive($_POST);
$_GET=addslashes__recursive($_GET);
$_REQUEST=addslashes__recursive($_REQUEST);
$_SERVER=addslashes__recursive($_SERVER);
$_COOKIE=addslashes__recursive($_COOKIE);
?>


y con ésto ya limpio mi ID siempre y no hay ya ninguna fallo de seguridad,no es cierto? gracias

Lo que estas haciendo, lo hace magic_quotes_gpc(GET, POST, COOKIE) mejor dejarlo On, así no tienen que hacer una función que realice el mismo trabajo y funcionara mas rápido.



Y en PHP >= 6, esta directiva ah sido removida, por algo sera no¿?. Lla forma CORRECTA para evitar SQLI es la funcion que menciono Franki mysql_real_escape_string().

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

viher

#17
ok entonces usare mysql_real_escape_string().

he hecho el siguiente code,porfavor echenle un ojo aver si lo hice bien

Código (php) [Seleccionar]
<? include ("config.php");
        if(empty($_GET["id"]))
{
echo "Selecciona un video para reproducir";
}
else{
$id = $_GET["id"];
$sql = "select * from videos where id=$id";
//Instrucción a ejecutarse en la bbdd.

$squery = mysql_query($sql);
//Ejecución de la instrucción

while($row = mysql_fetch_array($squery)){
//Recuperar los datos de un registro o hilera (row) y meterlo a un array
$nombre = mysql_escape_string($row['nombre']);
echo $nombre; }}
?>


gracias!

Franki

Esta mal, sigue siendo vulnerable porque utilizas la función despues para mostrar los datos. Tienes que filtrarlos antes de ejecutar la consulta a la base de datos.

Código (php) [Seleccionar]
<? include ("config.php");
        if(empty($_GET["id"]))
{
echo "Selecciona un video para reproducir";
}
else{
$id = mysql_real_escape_string($_GET["id"]);
$sql = "select * from videos where id=$id";
//Instrucción a ejecutarse en la bbdd.

$squery = mysql_query($sql);
//Ejecución de la instrucción

while($row = mysql_fetch_array($squery)){
//Recuperar los datos de un registro o hilera (row) y meterlo a un array
$nombre =$row['nombre'];
echo $nombre; }}
?>