Foros del Web » Programando para Internet » PHP »

Ademas de pasar el SID por URL cual es la otra forma de hacerlo???

Estas en el tema de Ademas de pasar el SID por URL cual es la otra forma de hacerlo??? en el foro de PHP en Foros del Web. Tengo un problema, finalice un site en php donde el SID lo paso por URL pero me di cuenta que es inseguro, cual otra forma ...
  #1 (permalink)  
Antiguo 06/09/2006, 08:24
Avatar de Dalbin  
Fecha de Ingreso: abril-2005
Mensajes: 74
Antigüedad: 19 años
Puntos: 4
Ademas de pasar el SID por URL cual es la otra forma de hacerlo???

Tengo un problema, finalice un site en php donde el SID lo paso por URL pero me di cuenta que es inseguro, cual otra forma de obtener las variables de las sesiones me pueden recomendar, que sea seguro...
__________________
Lo más importante en la vida es estar con los ojos abiertos, y ver más alla de lo que te ofrecen
  #2 (permalink)  
Antiguo 06/09/2006, 08:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La otra forma de propagar el SID es por Cookies, cookies que PHP creará si así lo activas en tu php.ini (o por ini_set() en tiempo de ejecución u otros médios).

session.use_cookies = ON
session.use_trans_sid = OFF
session.use_only_cookies = ON

Como es una cookie lo que PHP creará .. los tiempos de expiración de esta (que también defines en php.ini) y sobre todo que tu cliente (navegador) acepte las cookies que PHP emitirá a este .. influirá en que este método de propagación del SID funcione correctamente.

más info en la documentación oficial de PHP al respecto:
www.php.net/session

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 06/09/2006, 08:50
Avatar de Dalbin  
Fecha de Ingreso: abril-2005
Mensajes: 74
Antigüedad: 19 años
Puntos: 4
Cita:
Iniciado por Cluster Ver Mensaje
La otra forma de propagar el SID es por Cookies, cookies que PHP creará si así lo activas en tu php.ini (o por ini_set() en tiempo de ejecución u otros médios).

session.use_cookies = ON
session.use_trans_sid = OFF
session.use_only_cookies = ON
Bueno yo en mi php.ini tenia esto asi

session.use_cookies = 1
session.use_trans_sid = 1
session.use_only_cookies = 1

eso que significa???, lo puse como tu me dijiste, pero donde yo tengo validaciones de esta manera
Código PHP:
<?
  
if ($_SESSION['tipo_usuario'] == "Usuario Restringido"){
      echo 
"<table width=\"860\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
      echo 
"<tr class=\"txt_small_blue\">";
      echo 
"<td width=\"40\">&nbsp;</td>";
      echo 
"<td width=\"110\"><a href=\"principal.php?mes=$mes&ano=$ano&sessid=$sessid\" style=\"color: #131BB1\">Principal</a></td>";
      echo 
"<td width=\"110\" valign=\"bottom\">Visitas</td>";
      echo 
"<td width=\"110\" valign=\"bottom\">Clientes</td>";
      echo 
"<td width=\"110\" valign=\"bottom\">Reporte</td>";
      echo 
"<td width=\"130\" valign=\"bottom\">Demostracion</td>";
      echo 
"<td width=\"130\"><a href=\"clave.php?mes=$mes&ano=$ano&sessid=$sessid\" style=\"color:#131bb1\">Cambiar Clave</a></td>";
      echo 
"<td width=\"120\"><a href=\"logout.php?sessid=$sessid\" style=\"color:#131bb1\">Cerrar Sesi&oacute;n</a></td>";
      echo 
"</tr>";
      echo 
"</table>";
    }

    if (
$_SESSION['tipo_usuario'] == "Administrador"){ 
      echo 
"<table width=\"860\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
      echo 
"<tr class=\"txt_small_blue\">";
      echo 
"<td width=\"40\">&nbsp;</td>";
      echo 
"<td width=\"110\"><a href=\"principal.php?mes=$mes&ano=$ano&sessid=$sessid\" style=\"color: #131BB1\">Principal</a></td>";
      echo 
"<td width=\"110\" valign=\"bottom\"><img src=\"img/menu_visita.gif\" name=\"Image1\" width=\"36\" height=\"10\" id=\"Image1\" onMouseOver=\"MM_swapImage('Image1','','img/menu_visita.gif',1);MM_showMenu(window.mm_menu_0809162204_0,-4,14,null,'Image1')\" onMouseOut=\"MM_swapImgRestore();MM_startTimeout()\"></td>";
      echo 
"<td width=\"110\" valign=\"bottom\"><img src=\"img/menu_cliente.gif\" name=\"Image2\" width=\"43\" height=\"10\" id=\"Image2\" onMouseOver=\"MM_swapImage('Image2','','img/menu_cliente.gif',1);MM_showMenu(window.mm_menu_0809164511_0,-4,14,null,'Image2')\" onMouseOut=\"MM_swapImgRestore();MM_startTimeout()\"></td>";
      echo 
"<td width=\"110\" valign=\"bottom\"><a href=\"reporte.php?mes=$mes&ano=$ano&sessid=$sessid\" style=\"color: #131BB1\">Reporte</a></td>";
      echo 
"<td width=\"130\" valign=\"bottom\"><a href=\"demo_nuevo.php?mes=$mes&ano=$ano&sessid=$sessid\" style=\"color: #131BB1\">Demostracion</a></td>";
      echo 
"<td width=\"130\"><a href=\"clave.php?mes=$mes&ano=$ano&sessid=$sessid\" style=\"color:#131bb1\">Cambiar Clave</a> </td>";
      echo 
"<td width=\"130\"><a href=\"logout.php?sessid=$sessid\" style=\"color:#131bb1\">Cerrar Sesi&oacute;n</a></td>";
      echo 
"<td width=\"120\"><a href=\"admin/admin.php?mes=$mes&ano=$ano&sessid=$sessid\" style=\"color:#131bb1\">Administración</a></td>";
      echo 
"</tr>";
      echo 
"</table>";
    }

?>
No me aparece nada, porque no me lee las variables... que tengo de malo y en la pagina de validacion de usuario tengo esto asi

Código PHP:
<?
<?
require_once(
"conexion.php");

if (!
$usuario){
?>
    <script language="javascript">
        alert('Debe introducir un usuario.');
        location.href="index.php";
    </script>
<?
}

if (!
$clave){
?>
    <script language="javascript">
        alert('Debe introducir una contraseña.');
        history.back();
    </script>
<?
}

$user "select * from usuarios where nick = '".$usuario."'";
$resultado_user mysql_query($user);

$num_resultados_user mysql_num_rows($resultado_user);

$fila_user mysql_fetch_array($resultado_user);
$nombre stripslashes($fila_user["nombre"]);
$nick stripslashes($fila_user["nick"]);
$pass stripslashes($fila_user["clave"]);
$tipo_usuario stripslashes($fila_user["tipo_usuario"]);
$status stripslashes($fila_user["status"]);

if (
$num_resultados_user == 0){
?>
    <script language="javascript">
        alert('No se encuentra ese Usuario en la Base de Datos.\nContacte al Administrador.');
        history.back();
    </script>
<?
}

if (
$usuario == $nick && $clave == $pass && $status == 0){
?>
    <script language="javascript">
        alert('Su cuenta se encuentra suspendida.\nContacte al Administrador.');
        history.back();
    </script>
<?
}

if (
$usuario == $nick && $clave != $pass && $status == 1){
?>
    <script language="javascript">
        alert('Ha introducido la contraseña incorrecta.\nVuelva a intentarlo.');
        history.back();
    </script>
<?
}

if (
$usuario == $nick && $clave == $pass && $status == 1){
    
    
session_name('enseca');
    
    
session_start();
    
    
$_SESSION["nombre"] = $nombre;
    
$_SESSION["nick"] = $nick;
    
$_SESSION["tipo_usuario"] = $tipo_usuario;
    
    
header ("Location: principal.php?mes=".date(n)."&ano=".date(Y)); 
}


?>
__________________
Lo más importante en la vida es estar con los ojos abiertos, y ver más alla de lo que te ofrecen
  #4 (permalink)  
Antiguo 06/09/2006, 09:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Bueno yo en mi php.ini tenia esto asi

session.use_cookies = 1
session.use_trans_sid = 1
session.use_only_cookies = 1
Según eso propagas el SID en cookies (por qué así PHP lo intenta hacer en primera instalacia cuando busca un SID válido propagado a un script PHP) y luego si no la encuetra .. usa el SID propagado en el URL (por qué usas session.use_trans_sid = 1).

Lo ideal es USAR uno u otro método de propagación del SID .. o por cookies o por el URL .. pero no ese tipo de combinaciones ..

El código que presentas no sé si será el total .. así que no veo si cuando pretendes acceder a tus variables de sesión las inicias igual que cuando las defines:

Código PHP:
session_name('enseca'); 
session_start(); 

Se observa también que usabas un link de redireccionamiento por cabeceras (header()) .. ahí PHP no "inserta" el SID aunque uses session.use_trans_sid a 1 .. así que "se supone" que siempre propagastes el SID en cookies (y por ende tu navegador las aceptó y nada más lo bloqueó .. como un firewall/antivirus .. etc).

De hecho .. tu en tus links que hacías vistes el SID en el URL? .. algo tipo "enseca=897a89sd7f89789as7df89789asd" como parte del URL?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 06/09/2006, 09:31
Avatar de Dalbin  
Fecha de Ingreso: abril-2005
Mensajes: 74
Antigüedad: 19 años
Puntos: 4
Cita:
Iniciado por Cluster Ver Mensaje
De hecho .. tu en tus links que hacías vistes el SID en el URL? .. algo tipo "enseca=897a89sd7f89789as7df89789asd" como parte del URL?
Si, asi era como estaba pasando el SID para poder leer las variables de la sesion, pero me poy cuenta que es muy inseguro, y estoy intentando de la otra forma y no me muesta nada cuando pido ulgun dato a traves de una variable de sesion.

ok. en la pag index solo tengo usuario y clave, de alli salta a login.php donde tengo este codigo

Código PHP:
<?
require_once("conexion.php");

if (!
$usuario){
?>
    <script language="javascript">
        alert('Debe introducir un usuario.');
        location.href="index.php";
    </script>
<?
}

if (!
$clave){
?>
    <script language="javascript">
        alert('Debe introducir una contraseña.');
        history.back();
    </script>
<?
}

$user "select * from usuarios where nick = '".$usuario."'";
$resultado_user mysql_query($user);

$num_resultados_user mysql_num_rows($resultado_user);

$fila_user mysql_fetch_array($resultado_user);
$nombre stripslashes($fila_user["nombre"]);
$nick stripslashes($fila_user["nick"]);
$pass stripslashes($fila_user["clave"]);
$tipo_usuario stripslashes($fila_user["tipo_usuario"]);
$status stripslashes($fila_user["status"]);

if (
$num_resultados_user == 0){
?>
    <script language="javascript">
        alert('No se encuentra ese Usuario en la Base de Datos.\nContacte al Administrador.');
        history.back();
    </script>
<?
}

if (
$usuario == $nick && $clave == $pass && $status == 0){
?>
    <script language="javascript">
        alert('Su cuenta se encuentra suspendida.\nContacte al Administrador.');
        history.back();
    </script>
<?
}

if (
$usuario == $nick && $clave != $pass && $status == 1){
?>
    <script language="javascript">
        alert('Ha introducido la contraseña incorrecta.\nVuelva a intentarlo.');
        history.back();
    </script>
<?
}

if (
$usuario == $nick && $clave == $pass && $status == 1){
    
    
session_name('enseca');
    
    
session_start();
    
    
$_SESSION["nombre"] = $nombre;
    
$_SESSION["nick"] = $nick;
    
$_SESSION["tipo_usuario"] = $tipo_usuario;
    
    
header ("Location: principal.php?mes=".date(n)."&ano=".date(Y)); 
}


?>
principal.php

Código PHP:
<?
  
require_once("conexion.php");

  
session_start();
  
    if (
$_SESSION['tipo_usuario'] == "Usuario Restringido"){
      echo 
"<table width=\"860\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
      echo 
"<tr class=\"txt_small_blue\">";
      echo 
"<td width=\"40\">&nbsp;</td>";
      echo 
"<td width=\"110\"><a href=\"principal.php?mes=$mes&ano=$ano\" style=\"color: #131BB1\">Principal</a></td>";
      echo 
"<td width=\"110\" valign=\"bottom\">Visitas</td>";
      echo 
"<td width=\"110\" valign=\"bottom\">Clientes</td>";
      echo 
"<td width=\"110\" valign=\"bottom\">Reporte</td>";
      echo 
"<td width=\"130\" valign=\"bottom\">Demostracion</td>";
      echo 
"<td width=\"130\"><a href=\"clave.php?mes=$mes&ano=$ano\" style=\"color:#131bb1\">Cambiar Clave</a></td>";
      echo 
"<td width=\"120\"><a href=\"logout.php\" style=\"color:#131bb1\">Cerrar Sesi&oacute;n</a></td>";
      echo 
"</tr>";
      echo 
"</table>";
    }
    if (
$_SESSION['tipo_usuario'] == "Usuario Avanzado"){ 
      echo 
"<table width=\"860\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
      echo 
"<tr class=\"txt_small_blue\">";
      echo 
"<td width=\"40\">&nbsp;</td>";
      echo 
"<td width=\"110\"><a href=\"principal.php?mes=$mes&ano=$ano\" style=\"color: #131BB1\">Principal</a></td>";
      echo 
"<td width=\"110\" valign=\"bottom\"><img src=\"img/menu_visita.gif\" name=\"Image1\" width=\"36\" height=\"10\" id=\"Image1\" onMouseOver=\"MM_swapImage('Image1','','img/menu_visita.gif',1);MM_showMenu(window.mm_menu_0809162204_0,-4,14,null,'Image1')\" onMouseOut=\"MM_swapImgRestore();MM_startTimeout()\"></td>";
      echo 
"<td width=\"110\" valign=\"bottom\"><img src=\"img/menu_cliente.gif\" name=\"Image2\" width=\"43\" height=\"10\" id=\"Image2\" onMouseOver=\"MM_swapImage('Image2','','img/menu_cliente.gif',1);MM_showMenu(window.mm_menu_0809164511_0,-4,14,null,'Image2')\" onMouseOut=\"MM_swapImgRestore();MM_startTimeout()\"></td>";
      echo 
"<td width=\"110\" valign=\"bottom\"><a href=\"reporte.php?mes=$mes&ano=$ano\" style=\"color: #131BB1\">Reporte</a></td>";
      echo 
"<td width=\"130\" valign=\"bottom\"><a href=\"demo_nuevo.php?mes=$mes&ano=$ano\" style=\"color: #131BB1\">Demostracion</a></td>";
      echo 
"<td width=\"130\"><a href=\"clave.php?mes=$mes&ano=$ano\" style=\"color:#131bb1\">Cambiar Clave</a> </td>";
      echo 
"<td width=\"130\"><a href=\"logout.php\" style=\"color:#131bb1\">Cerrar Sesi&oacute;n</a></td>";
      echo 
"</tr>";
      echo 
"</table>";
    }
    if (
$_SESSION['tipo_usuario'] == "Administrador"){ 
      echo 
"<table width=\"860\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
      echo 
"<tr class=\"txt_small_blue\">";
      echo 
"<td width=\"40\">&nbsp;</td>";
      echo 
"<td width=\"110\"><a href=\"principal.php?mes=$mes&ano=$ano\" style=\"color: #131BB1\">Principal</a></td>";
      echo 
"<td width=\"110\" valign=\"bottom\"><img src=\"img/menu_visita.gif\" name=\"Image1\" width=\"36\" height=\"10\" id=\"Image1\" onMouseOver=\"MM_swapImage('Image1','','img/menu_visita.gif',1);MM_showMenu(window.mm_menu_0809162204_0,-4,14,null,'Image1')\" onMouseOut=\"MM_swapImgRestore();MM_startTimeout()\"></td>";
      echo 
"<td width=\"110\" valign=\"bottom\"><img src=\"img/menu_cliente.gif\" name=\"Image2\" width=\"43\" height=\"10\" id=\"Image2\" onMouseOver=\"MM_swapImage('Image2','','img/menu_cliente.gif',1);MM_showMenu(window.mm_menu_0809164511_0,-4,14,null,'Image2')\" onMouseOut=\"MM_swapImgRestore();MM_startTimeout()\"></td>";
      echo 
"<td width=\"110\" valign=\"bottom\"><a href=\"reporte.php?mes=$mes&ano=$ano\" style=\"color: #131BB1\">Reporte</a></td>";
      echo 
"<td width=\"130\" valign=\"bottom\"><a href=\"demo_nuevo.php?mes=$mes&ano=$ano\" style=\"color: #131BB1\">Demostracion</a></td>";
      echo 
"<td width=\"130\"><a href=\"clave.php?mes=$mes&ano=$ano\" style=\"color:#131bb1\">Cambiar Clave</a> </td>";
      echo 
"<td width=\"130\"><a href=\"logout.php?sessid=$sessid\" style=\"color:#131bb1\">Cerrar Sesi&oacute;n</a></td>";
      echo 
"<td width=\"120\"><a href=\"admin/admin.php?mes=$mes&ano=$ano\" style=\"color:#131bb1\">Administración</a></td>";
      echo 
"</tr>";
      echo 
"</table>";


?>
y en la pag principal donde tengo que mostrar algo como por ejemplo sencillo

echo $_SESSION['nombre'], no aparece nada, imagino es que no esta leyendo las variables, ya acomode el php.ini, en mi servidor y en la carpeta de Windows, lo coloque como me dijiste para que leyera la cookie y no por URL, pero igual no me lee nada...
__________________
Lo más importante en la vida es estar con los ojos abiertos, y ver más alla de lo que te ofrecen
  #6 (permalink)  
Antiguo 06/09/2006, 09:42
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 2 meses
Puntos: 3
Lo que pasa que si usasa header.. y tu propagacion del SID es por cookies, al momento de que en la otra pagina quieras imprimir los valores de session, no va a funcionar.... por que como te comento Cluster.. los valores que tienes en el php.ini, le estas diciendo que solo por cookies vas a propagarlo... entonces al redireccionar no le manda el SID , como lo haria,si la propagacion fuera por URL
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #7 (permalink)  
Antiguo 06/09/2006, 10:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En principal.php .. si tu defines nombre de sesión con:

session_name('enseca');


Debes seguir usandolo donde accedas a tus variables de sesión:

Código PHP:
<? 
  
require_once("conexion.php"); 

  
session_name('enseca'); 

  
session_start();
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:25.