elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Seguimiento id de login entre páginas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Seguimiento id de login entre páginas  (Leído 5,082 veces)
Shon

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Seguimiento id de login entre páginas
« en: 5 Enero 2011, 21:05 pm »

Hola mi problema es este:

Logeo en un portal

Mediante enlaces voy navegando por el contenido de la web.

Llega un punto en el que tengo que introducir información en una base de datos mysql relacionada con un usuario. ¿Cómo averiguo desde una página x, el nick del login que se hizo al principio en la página para logear?

Gracias!!


En línea

madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: Seguimiento id de login entre páginas
« Respuesta #1 en: 5 Enero 2011, 21:17 pm »

Puedes guardar el nick del login en una variable de sesión: $nick = $_SESSION['nick_log_principal'] y luego lo recuperas accediendo a la matriz $_SESSION.

Enlace:
_Sesiones en PHP


« Última modificación: 6 Enero 2011, 17:31 pm por madpitbull_99 » En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
Graphixx


Desconectado Desconectado

Mensajes: 1.336


Full Stack Developer


Ver Perfil WWW
Re: Seguimiento id de login entre páginas
« Respuesta #2 en: 6 Enero 2011, 04:46 am »

Cuando desees usar autenticacion por grupos, o niveles dentro dela web te recomiendo este script muy muy bueno.

http://www.beanbug.net/vScripts.php

El que dice:  vAuthenticate 3.0.1 
En línea

Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx Rōninnovation
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Seguimiento id de login entre páginas
« Respuesta #3 en: 6 Enero 2011, 05:42 am »

Cuando desees usar autenticacion por grupos, o niveles dentro dela web te recomiendo este script muy muy bueno.

http://www.beanbug.net/vScripts.php

El que dice:  vAuthenticate 3.0.1  

Ese vAuthenticate 3.0.1  parece que es para PHP4, tiene vulnerabilidades por todos lados hasta un bypass de SQLI en el login

Código
  1. <?php
  2. class auth{
  3. // CHANGE THESE VALUES TO REFLECT YOUR SERVER'S SETTINGS
  4. var $HOST = "127.0.0.1"; // Change this to the proper DB HOST
  5. var $USERNAME = "root"; // Change this to the proper DB USERNAME
  6. var $PASSWORD = "ramirez"; // Change this to the proper DB USER PASSWORD
  7. var $DBNAME = "vauth"; // Change this to the proper DB NAME
  8.  
  9. // AUTHENTICATE
  10. function authenticate($username, $password) {
  11. $query = "SELECT * FROM authuser WHERE uname='$username' AND passwd=MD5('$password') AND status <> 'inactive'";
  12.  
  13.        $UpdateRecords = "UPDATE authuser SET lastlogin = NOW(), logincount = logincount + 1 WHERE uname='$username'";
  14. $connection = mysql_connect($this->HOST, $this->USERNAME, $this->PASSWORD);
  15.  
  16. $SelectedDB = mysql_select_db($this->DBNAME);
  17. $result = mysql_query($query);
  18.  
  19. $numrows = mysql_num_rows($result);
  20. $row = mysql_fetch_array($result);
  21.  
  22. // CHECK IF THERE ARE RESULTS
  23. // Logic: If the number of rows of the resulting recordset is 0, that means that no
  24. // match was found. Meaning, wrong username-password combination.
  25. if ($numrows == 0) {
  26. return 0;
  27. }
  28.  
  29.        elseif ($row["level"]==1) {  // ADMIN LOGIN
  30. $Update = mysql_query($UpdateRecords);
  31. return 1;
  32. }
  33.  
  34. else {
  35. $Update = mysql_query($UpdateRecords);
  36. return $row;
  37. }
  38. } // End: function authenticate

Poner el nombre de usuario y como password:
Código:
') or ('1'='1

o
Código:
user:' OR  '1' =  '1
pass:') or ('1'='1


Si tienes la directiva short_open_tag Off como es en mi caso, las etiquetas <? ?> no son tomadas como etiquetas valida de PHP y muestra todo el codigo XD y por lo tanto no funciona correctamente ya que usa en varios archivos la etiqueta <? ?> y tienes que editar muchos archivos...

Es muy viejo, creo que es del año 2003 o 2004 y no se actualiza. Todavía veo pagina que lo utiliza xD.
« Última modificación: 6 Enero 2011, 06:12 am por ~ Yoya ~ » En línea

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.
Graphixx


Desconectado Desconectado

Mensajes: 1.336


Full Stack Developer


Ver Perfil WWW
Re: Seguimiento id de login entre páginas
« Respuesta #4 en: 6 Enero 2011, 05:59 am »

mmmmm gracias por tu analisis yoya, la verdad yo lo use hace años para una intranet que no hiba tener acceso a internet (gracias a Dios). cuando apenas estaba empezando. y no lo volvi a revisar incluso lo habia pasado a español, pero ya ni encuentro la traduccion.

EN su tiempo lo vi genial, algun sistema moderno asi que recomiendes ?

Y otra cosa, cuando uno usa una validacion javascript para comprobar si el usuario que estan ingresando de verdad existe en la BD, antes de confirmar usuario-contraseña, se podria decir que se protege el login de SQLI ?

algo asi:

El formulario de login:
Código
  1. <?php
  2. if(isset($_POST['send'])){
  3. if(consultarEmaillogin())
  4. $emailogin = "error";
  5.  
  6. //Comprobamos si todo ha ido bien
  7. if($emaillogin != "error")
  8. $status = 1;
  9. }
  10. ?>
  11. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  12. <html xmlns="http://www.w3.org/1999/xhtml">
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  15. <title>login</title>
  16. </head>
  17. <body>
  18. <font face="Arial">
  19. <center>
  20. Sistema Central de gestion de Digitadores
  21. </center>
  22. <?php if(!isset($status)): ?>
  23.                    <center><form name="form1" method="post" action="procesar_ingreso.php">
  24.                      <table width="200" border="0" align="center">
  25.                        <tr>
  26.                          <td>correo electr&oacute;nico</td>
  27.                          <td><input type="text" name="emaillogin" id="emaillogin" onblur="return consultarEmaillogin()" /></td>
  28.                        </tr>
  29.                        <tr>
  30.                          <td height="49">contrase&ntilde;a</td>
  31.                          <td><input type="password" name="password" id="password" />
  32.                            <font size=1><a href="sendpass.php">&iquest;Olvid&oacute; su contrase&ntilde;a?</a></font></td>
  33.                        </tr>
  34.                        <tr>
  35.                          <td colspan="2"><center>
  36.                            <input type="submit" name="nuevo" id="nuevo" value="Ingresar" />
  37.                          </center></td>
  38.                        </tr>
  39.                      </table>
  40.                        <label for="password"></label>                      
  41.                    </form></center>
  42.            <?php else: ?>
  43. <center><h1></h1></center>
  44. <?php endif; ?>
  45. </font>
  46. <script type="text/javascript" src="jquery.js"></script>
  47. <script type="text/javascript" src="main.js"></script>
  48. </body>
  49. </html>
  50.  

el javascript que valida (main.js - utiliza jquery.js):
Código:
$(document).ready(function(){
//variables globales
var searchBoxes = $(".text");
var inputUsername = $("#username");
var reqUsername = $("#req-username");

function consultarEmaillogin(){
var emailogin = inputEmaillogin.val();
$.getJSON('consultar_num_doc.php?email='+emailogin,function(data){
if( data.existe == false ){
alert("Este email no esta registrado");
inputEmaillogin.addClass("error");
   return false;
}
});
}

inputEmaillogin.blur(consultarEmaillogin);

//controlamos la validacion en los distintos eventos
// Perdida de foco
inputUsername.blur(validateUsername);
inputUsername2.blur(validateUsername2);
inputPassword1.blur(validatePassword1);  
inputPassword2.blur(validatePassword2);

// Pulsacion de tecla
inputUsername.keyup(validateUsername);
inputUsername2.keyup(validateUsername2);
inputPassword1.keyup(validatePassword1);
inputPassword2.keyup(validatePassword2);

// Envio de formulario
$("#form1").submit(function(){
if(validateUsername() & validateUsername2() & validatePassword1() & validatePassword2() )
return true;
else
return false;
});

//controlamos el foco / perdida de foco para los input text
searchBoxes.focus(function(){
$(this).addClass("active");
});
searchBoxes.blur(function(){
$(this).removeClass("active");  
});

});

y si se valida por javascript que el usuario ingresado existe se procede a validar su ingreso asi (procesar_ingreso.php):
Código
  1. <?php
  2.   include("libreria_ingreso.php");
  3.  
  4.    if(chequear_campos_vacios() and chequear_invalidos())
  5. {
  6. $email= $_POST['emaillogin'];
  7.        $password= $_POST['password'];
  8.        $connect=Conectarse();
  9.  
  10. //Sentencia SQL para buscar un usuario con esos datos
  11. $ssql = "SELECT * FROM admin WHERE email='$email' and clave='$password'";
  12.  
  13. //Ejecuto la sentencia
  14. $rs = mysql_query($ssql,$connect);
  15.  
  16. if (mysql_num_rows($rs)!=0){
  17.    //usuario y contraseña válidos
  18.    //defino una sesion y guardo datos
  19.    session_start();
  20.    $_SESSION["email"]=$_POST['emaillogin'];
  21.    header ("Location: admin.php");
  22. }else {
  23.    //si no existe le mando otra vez a la portada
  24. $mensaje="contraseña invalida";
  25. print "<script>alert('$mensaje')</script>";
  26.    print("<script>window.location.replace('index.php');</script>");
  27. //header("Location: index.php");
  28. }
  29. mysql_close($conn);
  30.  
  31. }
  32.  
  33. ?>
  34. <script type="text/javascript" src="jquery.js"></script>
  35. <script type="text/javascript" src="main.js"></script>
  36.  
« Última modificación: 6 Enero 2011, 06:17 am por Graphixx » En línea

Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx Rōninnovation
Graphixx


Desconectado Desconectado

Mensajes: 1.336


Full Stack Developer


Ver Perfil WWW
Re: Seguimiento id de login entre páginas
« Respuesta #5 en: 6 Enero 2011, 06:21 am »

Entonces Yoya, o algun otro usuario... creen que con el nuevo sistema de login, aun sigue siendo vulnerable ?
En línea

Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx Rōninnovation
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Seguimiento id de login entre páginas
« Respuesta #6 en: 6 Enero 2011, 06:32 am »

Yo usualmente lo creo si no es que uso algún CMS o ocupo algún framework como Cakephp que me ayuda, así no tengo que inventar la rueda xD. De momento no he usado algo similar al vAuthenticate...


En lo de proteger ataques SQLI usando javascript no es efectivo aparte de que se ve el código y puedes intentar bypassearlo, simplemente desactivando javascript o editando el codigo javascript mediante Firebug puedes evitar el código para protegerse de ataques SQL.
En línea

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.
Shon

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Re: Seguimiento id de login entre páginas
« Respuesta #7 en: 6 Enero 2011, 17:14 pm »

Muchas gracias, me ha funcionado de maravilla  ;-)
En línea

Spider-Net


Desconectado Desconectado

Mensajes: 1.165


Un gran poder conlleva una gran responsabilidad


Ver Perfil WWW
Re: Seguimiento id de login entre páginas
« Respuesta #8 en: 7 Enero 2011, 03:26 am »

Para evitar el SQL Injection en ese código lo que tendrías que hacer es filtrar las variables $username y $password antes de ejecutar cualquier sentencia SQL con ellas. Hay muchas funciones para parsear variables como mysql_real_escape_string(), strip_tags(), stripslashes(), etc.

Un ejemplo sencillo:

Código
  1. ...
  2.  
  3. $email=mysql_real_escape_string($_POST['email']);
  4. $password=mysql_real_escape_string($_POST['password']);
  5.  
  6. $sql=mysql_query("SELECT * FROM admin WHERE email='$email' and clave='$password'");
  7.  
  8. ...
  9.  

Es importante NUNCA ejecutar una sentencia SQL sin antes haber filtrado TODAS las variables que vayan a formar parte de la sentencia.

Lo mismo a la hora de mostrar las variables directamente con un "echo". Es bueno filtrar las variables antes de insertarlas en la base de datos y antes de mostrarlas por pantalla para evitar también ataques de XSS. Puedes filtrar el XSS con strip_tags() por ejemplo.
« Última modificación: 7 Enero 2011, 15:39 pm por Spider-Net » En línea

Shon

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Re: Seguimiento id de login entre páginas
« Respuesta #9 en: 7 Enero 2011, 10:26 am »

La leche, pues el código que tengo hecho tiene unos agujeros que te cabe una bombona de butano jaja

Vale, mientras leo sobre el tema, te pregunto las dudas que me han surgido al leer tu post:

¿Con ese código que me has enseñado, puedo estar medianamente a salvo, o tengo que utilizar más funciones como las que mencionas?

¿Hay que filtrar también las variables que yo creo, o sólo las que vienen de formularios mediante get o post?

¿Lo que dices de echo también es aplicable a print ?

¿Es conveniente filtrar una variable que guardaré en una variable de sesión y que sé, que mas adelante la tendré que utilizar para hacer una consulta? ¿O mejor guardarla sin filtrar y filtrarla cuando vaya a utilizarla?

Gracias  ;)
« Última modificación: 7 Enero 2011, 10:47 am por Stack_Overflow » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Crear sistema de login y paginas para usuarios
PHP
& eDu & 2 7,358 Último mensaje 14 Junio 2008, 02:20 am
por DarK_FirefoX
Match.com buscará delincuentes sexuales entre sus páginas
Noticias
wolfbcn 0 1,485 Último mensaje 20 Abril 2011, 13:38 pm
por wolfbcn
Ettercap con dns_spoof no saca contraseñas paginas login
Hacking
sunbikers 1 3,875 Último mensaje 30 Abril 2011, 15:25 pm
por toxeek
Cambio entre páginas desiguales y daño a la vista
Foro Libre
Aikanáro Anário 7 3,039 Último mensaje 28 Agosto 2011, 18:08 pm
por Aikanáro Anário
Distincion entre el Directorio de Paginas y la Tabla de Paginas.
ASM
Usuario887 0 2,742 Último mensaje 25 Julio 2020, 16:26 pm
por Usuario887
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines