Autor Tema: Creando un panel de control  (Leído 11919 veces)

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

Desconectado yoyahack

  • Recién llegado
  • *
  • Mensajes: 25
  • Karma: +0/-0
    • Ver Perfil
    • Email
Creando un panel de control
« : febrero 06, 2010, 07:52:42 pm »
Buenas,ps ahorita ando codeando una web y estoy creando un control de panel de control, ps explico algo mas:
Cree una base de datos y una tabla, la tabla...
Código: sql [Seleccionar]
create table usuarios (
    -> nombre varchar(20),
    -> password varchar(20));


Ok, luego tengo un formulario para ingresar el usuario y el password y luego le hago una sentencia a la tabla usuarios aver si el nombre y el password son correcto, si son correcto lo redirijo al panel de control, si no ps nada que se intente de nuevo. El problema esta en que puedo ingresar al panel de control directamente sin loguearme, ps creo que se puede solucionar con sesiones, pero no lo manejo por eso lo posteo, y no esta de mas darme otro consejo xDDD.

Saludos.
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 WHK

  • 吴阿卡
  • Administrador
  • Aportador
  • *****
  • Mensajes: 555
  • Karma: +15/-3
  • Coder
    • Yahoo Instant Messenger - yan_uniko_102
    • Ver Perfil
    • WHK
    • Email
Re: Creando un panel de control
« Respuesta #1 : febrero 06, 2010, 08:47:39 pm »
Hola, talves esto te sirva, ya está hecho:
http://www.webcomparte.com/foro/programacion-en-php/tutorial-de-como-crear-un-sistema-usuarios/

Ahi mismo se explica lo de las sesiones, lo que pasa es que al cargar el panel de control debes verificar la sesión del usuario que generalmente va con una cookie o autentificación de apache, etc, por ejemplo:

panel.php
Código: php [Seleccionar]
<?php
if((int)$_SESSION['user_id'] < 1) exit;
?>


Donde $_SESSION['user_id'] es el id del usuario logueado, de esta forma si el valor es menor a uno entonces no es nada y finaliza el script del panel o lanzas un header con location hacia el panel de ingreso.
Mi WEB - The Hacktivism is not a crime - Si no lo hago yo, que lo hagan otros -

Desconectado yoyahack

  • Recién llegado
  • *
  • Mensajes: 25
  • Karma: +0/-0
    • Ver Perfil
    • Email
Re: Creando un panel de control
« Respuesta #2 : febrero 06, 2010, 09:09:24 pm »
Ok, mejor vamos por paso.
Mi code:
Código: php [Seleccionar]

<?php
mysql_connect('localhost','root','clave') or die ('Error al conectar a la base de datos'.mysql_error());
mysql_select_db('cms') or die ('Error al seleccionar Base de datos'.mysql_error());
$usuario = $_POST['user'];
$password = $_POST['password'];
$sql = mysql_query('select * from usuarios where nombre='.$usuario.' && clave='.$password.);
if($sql){
    echo "Bien";
    header("Location: http://127.0.0.1/pag/admin.php");
   }else{
         echo "Mal";}

?>


Ok, ahora supongamos que los datos ingresados son correcto y se cumple la condicion if() y me redirije a admin.php pero como el archivo admin.php sabra que estoy conecctado mediante un usuario y password valido, porque si no cualquiera puede entrar y hacer lo que quiera.

Desconectado Enfermin

  • Usuario regular
  • **
  • Mensajes: 54
  • Karma: +5/-1
    • Ver Perfil
Re: Creando un panel de control
« Respuesta #3 : febrero 06, 2010, 09:30:34 pm »
pues.. para eso whk te dio este code

Código: php [Seleccionar]
<?php
if((int)$_SESSION['user_id'] < 1) exit;
?>


esto lo insertas en el admin.php y en cada pagina de administracion  :D

Desconectado janito24

  • Usuario constante
  • ***
  • Mensajes: 222
  • Karma: +7/-0
  • Booooooo!
    • Ver Perfil
    • SkyDrive.cl
Re: Creando un panel de control
« Respuesta #4 : febrero 07, 2010, 12:43:00 am »
yoyahack, tampoco me manejo muy bien en las sesiones, pero te planteare algo que me parece que es un error bastante comun :S

Si no me equivoco tienes guardado en la base de datos el usuario y el pass en texto plano, lo que seria fatal en una posible inyeccion sql o ataque que permita vizualizar el contenido de la db.

Si te fijas o lo piensas desde otro punto en vez de guardarel pass podrias guardar una cadena compleja nada mas que sea generada por php cada vez que te logueas. Por ejemplo en ves de:

Código: php [Seleccionar]

$usuario = $_POST['user'];
$password = $_POST['password'];
$sql = mysql_query('select * from usuarios where nombre='.$usuario.' && clave='.$password.);


yo haria algo asi:

Código: php [Seleccionar]
...
$usuario = $_POST['user'];
$password = $_POST['password'];
$seguridad = 'hGcS#edR?(31lkJ6'; //Una cadena absolutamente al azar (determinada por ti no al azar para siempre xD) que a menos que tengan acceso a tu archivo.php no sera facil de joder xD
//Esto genera una monstruosidad xD
$cadena = sha1($usuario . sha1($password) . $seguridad);
$sql = mysql_query('select * from usuarios where nombre='.$usuario.' && clave='.$cadena.);
...


Tal vez estoy equivocado pero si piensas, es mas facil ingresar a tu propio panel de administracion sabiendo que el usuario es "admin" y la contraseña es "1234" que teniendo "admin" y una maldita cadena sin sentido no? si estoy equivocado ignorame xD soy un maldito novato jajaja

Saludos ;)
« Última Modificación: febrero 07, 2010, 12:44:31 am por janito24 »

Desconectado yoyahack

  • Recién llegado
  • *
  • Mensajes: 25
  • Karma: +0/-0
    • Ver Perfil
    • Email
Re: Creando un panel de control
« Respuesta #5 : febrero 07, 2010, 10:51:27 am »
@janito24, ps tranquilo hombre, yo estoy al tanto de eso, pero prefiero primero lograr lo que ando buscando y luego poner algo de seguridad, porque seria dificir correr sin aprender a caminar xD.

Yo no puedo verificar la session sin primero generarla, aver si me explica como funcionan o su estructura.
Código: php [Seleccionar]

if((int)$_SESSION['user_id'] < 1) exit;
?>

Desconectado lol

  • Usuario regular
  • **
  • Mensajes: 53
  • Karma: +8/-0
  • lol
    • Ver Perfil
Re: Creando un panel de control
« Respuesta #6 : febrero 07, 2010, 12:55:43 pm »
No se si lo diré bien  :shsh: , al poner este script en admin.php te comprueba si el usuario que tienes tiene como valor menor a uno o mayor , si es menor no se ejecutada si es mayor pones un else con lo que quieras que haya en admin.php . Pero para eso tendrias que crear una tabla con valores íntegros .

Desconectado yoyahack

  • Recién llegado
  • *
  • Mensajes: 25
  • Karma: +0/-0
    • Ver Perfil
    • Email
Re: Creando un panel de control
« Respuesta #7 : febrero 07, 2010, 01:51:38 pm »
Si claro entiendo el code que posteo WHK, pero el problema es enviar las cookies al cliente/nabegador porque aunque se loguee correctamente y no le envio cookies ps nunca tendra cookies creo yo.
Entonce la funcion siempre dara false porque nunca hay cookies.

Desconectado WHK

  • 吴阿卡
  • Administrador
  • Aportador
  • *****
  • Mensajes: 555
  • Karma: +15/-3
  • Coder
    • Yahoo Instant Messenger - yan_uniko_102
    • Ver Perfil
    • WHK
    • Email
Re: Creando un panel de control
« Respuesta #8 : febrero 07, 2010, 03:02:07 pm »
Prueba esto:

Código: php [Seleccionar]
<?php
session_start(); /* Inicia sesión */
mysql_connect('localhost','root','clave') or die ('Error al conectar a la base de datos'.mysql_error());
mysql_select_db('cms') or die ('Error al seleccionar Base de datos'.mysql_error());
$usuario = $_POST['user'];
$password = $_POST['password'];
$sql = mysql_query('select * from usuarios where nombre="'.mysql_real_escape_string($usuario).' && clave="'.mysql_real_escape_string($password).'"');
if($sql){
//    echo "Bien"; No puedes enviar contenido de texto antes de enviar un header
    $_SESSION['permitido'] = 'si';
    header("Location: http://127.0.0.1/pag/admin.php");
    exit; /* Si no das un exit el script va a seguir su curso hasta abajo */
   }else{
         echo "Mal";}
 
?>


Después en tu panel dices que si $_SESSION['permitido'] == 'si' entonces que siga o si no que lanze un header hacia el login y recuerda el exit; y el session_start();, además el mysql_real_escape_string() y de encerrar enc omillas el valor porque si tengo un pass con un espacio en blanco o una comilla tu query se hace corrupta.
« Última Modificación: febrero 07, 2010, 03:03:53 pm por WHK »
Mi WEB - The Hacktivism is not a crime - Si no lo hago yo, que lo hagan otros -

Desconectado yoyahack

  • Recién llegado
  • *
  • Mensajes: 25
  • Karma: +0/-0
    • Ver Perfil
    • Email
Re: Creando un panel de control
« Respuesta #9 : febrero 07, 2010, 03:05:21 pm »
Ok, gracias me pongo a codear si tengo algun problema sigo el hilo.

Lo de el espacio creo que lo podre resolver con la funcion trim().

Saludos.
« Última Modificación: febrero 07, 2010, 03:07:53 pm por yoyahack »

Desconectado yoyahack

  • Recién llegado
  • *
  • Mensajes: 25
  • Karma: +0/-0
    • Ver Perfil
    • Email
Re: Creando un panel de control
« Respuesta #10 : febrero 07, 2010, 03:25:55 pm »
Otra pregunta, ps no puedo poner una cookie como valor si, ya que si alguien se pone ese valor estaria logueado como admin, pero si pongo una cookie fija para cada admin, todos tendran la misma cokies y ps quisiera crear como por ejemplo una cookie alertoria y que sea diferente para cada usuario.

Desconectado lol

  • Usuario regular
  • **
  • Mensajes: 53
  • Karma: +8/-0
  • lol
    • Ver Perfil
Re: Creando un panel de control
« Respuesta #11 : febrero 07, 2010, 05:15:49 pm »
Quando dices cookie te refieres a
Código: [Seleccionar]
$_SESSION['permitido'] = 'si';
o a el metodo setcooike?

Desconectado WHK

  • 吴阿卡
  • Administrador
  • Aportador
  • *****
  • Mensajes: 555
  • Karma: +15/-3
  • Coder
    • Yahoo Instant Messenger - yan_uniko_102
    • Ver Perfil
    • WHK
    • Email
Re: Creando un panel de control
« Respuesta #12 : febrero 07, 2010, 05:48:56 pm »
http://cl.php.net/manual/en/features.sessions.php

Las sesiones de php no pueden ser vistas ni modifucadas por el visitante, solamente se le asigna un valor al azar en md5 y ese se usa de identificador pero el contenido se maneja internamente en el servidor.

http://cl.php.net/manual/en/reserved.variables.session.php
Mi WEB - The Hacktivism is not a crime - Si no lo hago yo, que lo hagan otros -

Desconectado yoyahack

  • Recién llegado
  • *
  • Mensajes: 25
  • Karma: +0/-0
    • Ver Perfil
    • Email
Re: Creando un panel de control
« Respuesta #13 : febrero 07, 2010, 05:52:29 pm »
Me adelante un poco lol jejje, ya resolvi ese problema, ahora ando usando la funcion setcookie, tengo un problemita esque hago una consulta sql pero no verifica si los datos son correcto .

Código: php [Seleccionar]
<?php
mysql_connect('localhost','root','pass') or die ('Error al conectar a la base de datos'.mysql_error());
mysql_select_db('cms') or die ('Error al seleccionar Base de datos'.mysql_error());
$sql = mysql_query("select nombre, password from usuarios where nombre = 'a' && password = 'aa'");
    if($sql){    header("Location: http://127.0.0.1/pag/index.html");}else{exit;}
?>


Osea siempre la respuesta es true aunque los datos sean falso y me redirecciona.

Desconectado lol

  • Usuario regular
  • **
  • Mensajes: 53
  • Karma: +8/-0
  • lol
    • Ver Perfil
Re: Creando un panel de control
« Respuesta #14 : febrero 07, 2010, 06:28:04 pm »
Creo que el error se haya en :

Código: [Seleccionar]
$sql = mysql_query("select nombre, password from usuarios where nombre = 'a' && password = 'aa'");

Código: [Seleccionar]
$sql = mysql_query('select * from usuarios where nombre="'.mysql_real_escape_string($usuario).' && clave="'.mysql_real_escape_string($password).'"');

has creado la db de cms por que a mi tu código si que me va .
« Última Modificación: febrero 07, 2010, 06:32:39 pm por lol »


. . . . . . . .