Autor Tema: Algún ejemplo de script con php y mysql?  (Leído 11610 veces)

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

Desconectado janito24

  • Usuario constante
  • ***
  • Mensajes: 222
  • Karma: +7/-0
  • Booooooo!
    • Ver Perfil
    • SkyDrive.cl
Algún ejemplo de script con php y mysql?
« : octubre 16, 2009, 04:37:37 pm »
Alguien tiene por su biblioteca un ejemplo simple de conexión de php con mysql protegiendo las variables contra sql inyectión pero que no sea un CMS?
 
Quiero ver como se muestran las variables desde la base de datos y dentro de lo posible ver como se página protegiendo claro esta xD se que es un poquito flojo pero es más por no saber bien como hacerlo, además los códigos echos siempre son muy complicados por lo menos para principiantes.
 
Conozco algo de la sintaxis pero no se aplicarlo bien
Si has encontrado útil este articulo recuerda que puedes ayudarnos con tu donación voluntaria la cual ayudará al staff y a la mantención del foro.

Desconectado Enfermin

  • Usuario regular
  • **
  • Mensajes: 54
  • Karma: +5/-1
    • Ver Perfil
Re: Algún ejemplo de script con php y mysql?
« Respuesta #1 : octubre 16, 2009, 06:50:45 pm »
yo siempre empiezo desde aqui:

la conexion config.php:
Código: php [Seleccionar]
$dbhost = "localhost"; 
$dbname = "basedatos";
$dbuser = "root";
$dbpass = "miclave";

$cn = @mysql_connect($dbhost, $dbuser, $dbpass) or die("<h1>Error en la conexion con el servidor</h1>");
@mysql_select_db($dbname) or die("<h1>Error al seleccionar la base de datos</h1>");

function anti_inyeccion($valor){
  if(get_magic_quotes_gpc()){
  $valor=stripslashes($valor);
  }
  if(!is_numeric($valor)){
  $valor="'".mysql_real_escape_string($valor)."'";
  }
  return $valor;
}


el index:
Código: html4strict [Seleccionar]
<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">

USUARIO:<input type="text" name="usuario" autocomplete="off" /><br />
CLAVE:<input type="password" name="clave" autocomplete="off" /><br />
<input type="submit" name="login" value="Entrar" />

</form>


en ese mismo index, pero mas abajito le meto:
Código: php [Seleccionar]
<?php 
if(!empty($_POST['login'])){
  if(!empty($_POST['usuario']) && $_POST['usuario']==""){
    echo "<font color=\"red\">Error, debes escribir tu nombre de user :P.</font>";
    exit;
  }
  if(!empty($_POST['clave']) && $_POST['clave']==""){
    echo "<font color=\"red\">Error, debes escribir tu clave :P.</font>";
    exit;
  }
  else{
     include("config.php");
     $user=htmlentities(trim($_POST['usuario']),ENT_QUOTES);
     $clave=htmlentities(trim($_POST['clave']),ENT_QUOTES);
     $query=mysql_query("SELECT user,clave FROM usuarios WHERE id=".anti_inyeccion($user)." AND clave=".anti_inyeccion($clave),$cn);

//INGRESASTE :D
  }
}
?>
 


hasta donde se y averigue.. es 100% seguro anti todo  :P (espero no equivocarme)

Desconectado WHK

  • 吴阿卡
  • Administrador
  • Aportador
  • *****
  • Mensajes: 555
  • Karma: +15/-3
  • Coder
    • Yahoo Instant Messenger - yan_uniko_102
    • Ver Perfil
    • WHK
    • Email
Re: Algún ejemplo de script con php y mysql?
« Respuesta #2 : octubre 16, 2009, 06:59:00 pm »
Hola, aver si te puedo ayudar un poco con tu código xD

Código: php [Seleccionar]
$dbhost = "localhost"; 
$dbname = "basedatos";
$dbuser = "root";
$dbpass = "miclave";
 
$cn = @mysql_connect($dbhost, $dbuser, $dbpass) or die("<h1>Error en la conexion con el servidor</h1>");
@mysql_select_db($dbname) or die("<h1>Error al seleccionar la base de datos</h1>");
 
function anti_inyeccion($valor){
 if(get_magic_quotes_gpc()){
  $valor=stripslashes($valor);
 }
 if(!is_numeric($valor)){
  return "'".mysql_real_escape_string($valor)."'";
 }else{
  return (int)$valor;
 }
}


Es mejor que si es numérico devuelva un integer ya que los numeros negativos o con decimales tambien son considerados numéricos pero pueden causar problemas en una query y malinterpretar un punto como si fuera el nombre de una tabla y devolvería un disclosure con el nombre de la tabla actual si es que devuelves errores de mysql.

Código: php [Seleccionar]
     include("config.php");
     $user=htmlentities(trim($_POST['usuario']),ENT_QUOTES);
     $clave=htmlentities(trim($_POST['clave']),ENT_QUOTES);
     $query=mysql_query("SELECT user,clave FROM usuarios WHERE id=".anti_inyeccion($user)." AND clave=".anti_inyeccion($clave),$cn);
 
//INGRESASTE :D

Acá no es necesario utilizar htmlentities si ya usaste mysql escape real string y puedes usar htmlspecialchars si quieres evitar el xss pero usalo solamente cuando muestres un valor en pantalla no para guardar ya que si despues quieres hacer una busqueda a un nombre con comillas tendrás problemas como por ejemplo robin's
Saludos.
« Última Modificación: octubre 16, 2009, 07:01:06 pm por WHK »
Mi WEB - The Hacktivism is not a crime - Si no lo hago yo, que lo hagan otros -

Desconectado Enfermin

  • Usuario regular
  • **
  • Mensajes: 54
  • Karma: +5/-1
    • Ver Perfil
Re: Algún ejemplo de script con php y mysql?
« Respuesta #3 : octubre 16, 2009, 07:18:24 pm »
Hola, aver si te puedo ayudar un poco con tu código xD

Código: php [Seleccionar]
$dbhost = "localhost"; 
$dbname = "basedatos";
$dbuser = "root";
$dbpass = "miclave";
 
$cn = @mysql_connect($dbhost, $dbuser, $dbpass) or die("<h1>Error en la conexion con el servidor</h1>");
@mysql_select_db($dbname) or die("<h1>Error al seleccionar la base de datos</h1>");
 
function anti_inyeccion($valor){
 if(get_magic_quotes_gpc()){
  $valor=stripslashes($valor);
 }
 if(!is_numeric($valor)){
  return "'".mysql_real_escape_string($valor)."'";
 }else{
  return (int)$valor;
 }
}


Es mejor que si es numérico devuelva un integer ya que los numeros negativos o con decimales tambien son considerados numéricos pero pueden causar problemas en una query y malinterpretar un punto como si fuera el nombre de una tabla y devolvería un disclosure con el nombre de la tabla actual si es que devuelves errores de mysql.
gracias por las sugerencias, pero esta parte no me quedo claro  :o
Código: php [Seleccionar]
 if(!is_numeric($valor)){
  return "'".mysql_real_escape_string($valor)."'";
 }else{
  return $valor;
 }
}

pero la funcion dice que si el valor pasado es numerico, no le agregara las comillas como lo hace con los strings, por lo tanto devuelve integer  ???

Desconectado WHK

  • 吴阿卡
  • Administrador
  • Aportador
  • *****
  • Mensajes: 555
  • Karma: +15/-3
  • Coder
    • Yahoo Instant Messenger - yan_uniko_102
    • Ver Perfil
    • WHK
    • Email
Re: Algún ejemplo de script con php y mysql?
« Respuesta #4 : octubre 16, 2009, 07:59:19 pm »
los valores integers no se encierran en comillas cuando haces una query  :P por eso si te fijas le puse el (int) delante de la variable, eso transforma lo que sea a integer, si no es numerico el valor es cero por lo tanto tampoco admite floats ni doubles

Código: php [Seleccionar]
<?php
echo (int)$_GET['test'];
?>


testeas con test.php?test=lo que sea
« Última Modificación: octubre 16, 2009, 08:00:56 pm por WHK »
Mi WEB - The Hacktivism is not a crime - Si no lo hago yo, que lo hagan otros -

Desconectado janito24

  • Usuario constante
  • ***
  • Mensajes: 222
  • Karma: +7/-0
  • Booooooo!
    • Ver Perfil
    • SkyDrive.cl
Re: Algún ejemplo de script con php y mysql?
« Respuesta #5 : octubre 16, 2009, 08:11:59 pm »
los valores integers no se encierran en comillas cuando haces una query  :P por eso si te fijas le puse el (int) delante de la variable, eso transforma lo que sea a integer, si no es numerico el valor es cero por lo tanto tampoco admite floats ni doubles

Código: php [Seleccionar]
<?php
echo (int)$_GET['test'];
?>


testeas con test.php?test=lo que sea

Pero en ese ejemplo se aceptan numeros negativos, no se supone que tambien daban errores en las querys?

@Enfermin gracias por el código :)

Desconectado WHK

  • 吴阿卡
  • Administrador
  • Aportador
  • *****
  • Mensajes: 555
  • Karma: +15/-3
  • Coder
    • Yahoo Instant Messenger - yan_uniko_102
    • Ver Perfil
    • WHK
    • Email
Re: Algún ejemplo de script con php y mysql?
« Respuesta #6 : octubre 16, 2009, 11:26:24 pm »
en ese caso la query va a devolver un resultado vacio porque no hay un valor que concuerde pero no hará problema con la query en si, o sea, un decimal puede llevar punto o coma y eso en mysql se puede traducir en otra cosa en cambio un signo negativo no a menos que pongas dos juntos, ahi sería comentario pero en un integer no se puede a menos que estés haciendo un calculo matemático y este no es el caso asi que solamente devolverá integers y no es necesario encerrarlo entre comillas.
Mi WEB - The Hacktivism is not a crime - Si no lo hago yo, que lo hagan otros -

Desconectado janito24

  • Usuario constante
  • ***
  • Mensajes: 222
  • Karma: +7/-0
  • Booooooo!
    • Ver Perfil
    • SkyDrive.cl
Re: Algún ejemplo de script con php y mysql?
« Respuesta #7 : octubre 17, 2009, 02:24:24 am »
Aps ok... Es que alguna vez alguien me estaba enseñando una inyección sql y algo hacia con id=-1 y según lo que arrojaba veía sí era o no vulnerable...

Desconectado Enfermin

  • Usuario regular
  • **
  • Mensajes: 54
  • Karma: +5/-1
    • Ver Perfil
Re: Algún ejemplo de script con php y mysql?
« Respuesta #8 : octubre 17, 2009, 11:26:27 am »
los valores integers no se encierran en comillas cuando haces una query  :P por eso si te fijas le puse el (int) delante de la variable, eso transforma lo que sea a integer, si no es numerico el valor es cero por lo tanto tampoco admite floats ni doubles

mi, no entender   ;D
si mi query encerrara en comillas solo si el valor es un string, si fuera integer no lo encerraria, por eso que la query lo puse asi:

Código: sql [Seleccionar]
"SELECT user,clave FROM usuarios WHERE id=".anti_inyeccion($user)." AND clave=".anti_inyeccion($clave),$cn);


y no asi:

Código: sql [Seleccionar]
"SELECT user,clave FROM usuarios WHERE id='".anti_inyeccion($user)."' AND clave='".anti_inyeccion($clave)."'",$cn);





« Última Modificación: octubre 17, 2009, 11:34:17 am por Enfermin »

Desconectado WHK

  • 吴阿卡
  • Administrador
  • Aportador
  • *****
  • Mensajes: 555
  • Karma: +15/-3
  • Coder
    • Yahoo Instant Messenger - yan_uniko_102
    • Ver Perfil
    • WHK
    • Email
Re: Algún ejemplo de script con php y mysql?
« Respuesta #9 : octubre 17, 2009, 07:32:45 pm »
Código: php [Seleccionar]
$sql = "SELECT user,clave FROM usuarios WHERE id=1 AND clave='test' ";


fijate que id no lleva comillas y el string test si las lleva, por eso no es necesario encerrarlos en comillas cuando el valor es un integer
Mi WEB - The Hacktivism is not a crime - Si no lo hago yo, que lo hagan otros -

Desconectado janito24

  • Usuario constante
  • ***
  • Mensajes: 222
  • Karma: +7/-0
  • Booooooo!
    • Ver Perfil
    • SkyDrive.cl
Re: Algún ejemplo de script con php y mysql?
« Respuesta #10 : octubre 17, 2009, 11:30:28 pm »
Código: php [Seleccionar]
$query=mysql_query("SELECT user,clave FROM usuarios WHERE id=".anti_inyeccion($user)." AND clave=".anti_inyeccion($clave),$cn);


Eso esta bien? en el formulario no de pide el id xD o yo agregue un id de mas en la base de datos y la clave principal era user?

aaaaaaaaaaaaaaaaaaaaaaaahhhhhhhhhhhhhhhh!!!!!!!!!! demonios no me resulta, la base de datos que estructura tiene?

es "basededatos" tabla "usuarios" campos "user" y "clave" no? o me falta "id" en los campos?

Desconectado WHK

  • 吴阿卡
  • Administrador
  • Aportador
  • *****
  • Mensajes: 555
  • Karma: +15/-3
  • Coder
    • Yahoo Instant Messenger - yan_uniko_102
    • Ver Perfil
    • WHK
    • Email
Re: Algún ejemplo de script con php y mysql?
« Respuesta #11 : octubre 19, 2009, 12:03:27 am »
Citar
es "basededatos" tabla "usuarios" campos "user" y "clave" no? o me falta "id" en los campos?
El orden debería ser
id con autoincrement e index
user
clave
Mi WEB - The Hacktivism is not a crime - Si no lo hago yo, que lo hagan otros -

Desconectado janito24

  • Usuario constante
  • ***
  • Mensajes: 222
  • Karma: +7/-0
  • Booooooo!
    • Ver Perfil
    • SkyDrive.cl
Re: Algún ejemplo de script con php y mysql?
« Respuesta #12 : octubre 19, 2009, 01:50:35 am »
Si ya lo logré, gracias a los dos!
Más preguntas... Como se muestran consultas SQL en php?
 
Sería algo como igualar la consulta a una variable y luego mostrar la variable? Porque lo intenté así y me mostraba en pantalla "Resource #5" o algo así, no recuerdo en este minuto

Desconectado WHK

  • 吴阿卡
  • Administrador
  • Aportador
  • *****
  • Mensajes: 555
  • Karma: +15/-3
  • Coder
    • Yahoo Instant Messenger - yan_uniko_102
    • Ver Perfil
    • WHK
    • Email
Re: Algún ejemplo de script con php y mysql?
« Respuesta #13 : octubre 19, 2009, 02:08:19 am »
Código: php [Seleccionar]
<?php
$sql = 'select * from datos'
$query = mysql_query($sql, $handle);
$retorno = array();
while($fila = mysql_fetch_array($query, MYSQL_ASSOC)){
 $retorno[] = $fila;
}
print_r($retorno);
?>


Puedes hacerle click a cada funcion y te enviará a php.net con la descripción de cada función
Mi WEB - The Hacktivism is not a crime - Si no lo hago yo, que lo hagan otros -

Desconectado Enfermin

  • Usuario regular
  • **
  • Mensajes: 54
  • Karma: +5/-1
    • Ver Perfil
Re: Algún ejemplo de script con php y mysql?
« Respuesta #14 : octubre 19, 2009, 11:18:56 am »
Código: php [Seleccionar]
$query=mysql_query("SELECT user,clave FROM usuarios WHERE id=".anti_inyeccion($user)." AND clave=".anti_inyeccion($clave),$cn);


Eso esta bien? en el formulario no de pide el id xD o yo agregue un id de mas en la base de datos y la clave principal era user?

aaaaaaaaaaaaaaaaaaaaaaaahhhhhhhhhhhhhhhh!!!!!!!!!! demonios no me resulta, la base de datos que estructura tiene?

es "basededatos" tabla "usuarios" campos "user" y "clave" no? o me falta "id" en los campos?

jeje, si tiene razon el admin, en lugar de id es user.. un error lo comete cualquiera  ;D


. . . . . . . .