Foros del Web » Programando para Internet » PHP »

Autentificator - Gestión de Usuarios by Cluster

Estas en el tema de Autentificator - Gestión de Usuarios by Cluster en el foro de PHP en Foros del Web. este script se puede transformar a bd mdb?...

  #181 (permalink)  
Antiguo 28/01/2005, 11:01
 
Fecha de Ingreso: enero-2005
Mensajes: 10
Antigüedad: 19 años, 3 meses
Puntos: 0
este script se puede transformar a bd mdb?
  #182 (permalink)  
Antiguo 28/01/2005, 11:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues por poder se puede ... la tabla de "usuarios" es bien simple y sólo se trata de hacer consultas a ella via ODBC (www.php.net/odbc) (hablo de la parte principal aut_verifica.inc.php)

Un saludo,
  #183 (permalink)  
Antiguo 11/03/2005, 07:05
 
Fecha de Ingreso: febrero-2005
Mensajes: 3
Antigüedad: 19 años, 2 meses
Puntos: 0
Instale todo pero..

no me deja entrar al Admin...


Usuario : Admin
password admin

cuando pongo eso me aparece

Error cod.:1 - Acceso incorrecto!
  #184 (permalink)  
Antiguo 11/03/2005, 07:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por PI0j0
Instale todo pero..

no me deja entrar al Admin...


Usuario : Admin
password admin

cuando pongo eso me aparece

Error cod.:1 - Acceso incorrecto!
El error sucede por no poder acceder al valor de "HTTP_REFERER" (la página referida) ..

Algunos proxy's, configuraciones de seguridad de navegadores o si lo usas para autentificar una "popup" que abres con javascript .. por ejemplo .. no entregan dicha información para que la pueda acceder PHP ..

Si eso te plantea problemas, puedes elminar el código que hace referencia a $_SERVER['HTTP_REFERER'] y su validación (ese if() que ahí veras en aut_verifica.inc.php) .. deja el valor de la variable $redir apuntando al URL que contenga tu formulario de login (http://www.tal.ta/formulario_login.php o donde corresponda).

El resto de seguridad del script no se vé afectado por ese código. Dicha "validación" es una forma "rápida" de salir del script si se accede directamente a una página protegida (aunque insisto que se valida igualmente por las sesiones) .. también es una forma "automática" de mandar los mensajes de error en el login al formulario que los pide.


Un saludo,
  #185 (permalink)  
Antiguo 23/03/2005, 11:51
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
Cluster, me instalé tu sistema y lo adapté en menos de 5', era "justo" lo que necitaba... esta excelente!!!!!!! Te felicito por ello.

Te quiero hacer una consulta técnica. Puede ser que en cuando navegas logueado manteniendo las sesiones, haga algun tipo de redireccionamiento?

Porque estoy haciendo una aplicaciones, que cuando agrega datos a la base de datos manda un "header", típico de cualquier sistema, pero me tira un error y me dice que el header fue mandado antes en esta linea.

if ($nivel_acceso <= $_SESSION['usuario_nivel']){
header ("Location: $redir?error_login=5");
exit;
}

Esa línea la tengo en el script... ahhhh, no recién ahora me doy cuenta!!!!, claroooo, no es así... no no no... nada, deja, no dije, nada, esta perfecto....

chau chau chau
__________________
Ignacio
  #186 (permalink)  
Antiguo 23/03/2005, 12:15
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
No Cluster, no, no se que tiene, me dice

Warning: Cannot modify header information - headers already sent by

el autentificator anda bien y me lleva la sesión a todos lados... pero si quiero meter otro header me tira ese error
__________________
Ignacio
  #187 (permalink)  
Antiguo 23/03/2005, 13:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por ignacio_giri
No Cluster, no, no se que tiene, me dice

Warning: Cannot modify header information - headers already sent by

el autentificator anda bien y me lleva la sesión a todos lados... pero si quiero meter otro header me tira ese error
Si especificas concretamente el error (por qué ahí se te dice una línea concreta del script concreto) .. será lo ideal para ver el error.

En principio .. no hay problema en hacer:

session_start();

y luego un
header ("Location ....");

que es básicamente lo que hace el "require("aut_verifica.inc.php")" que es donde está ese "session_Start()" .. Pero, al llamarlo por un "require()" o include .. junto con otros tal vez que puedas tener .. si hay un espacio al final de ?> de ese include() o de otros .. o un salto de línea .. eso ya estará ocasionando "salida" (envio de cabeceras) al navegador .. Eso es por poner un ejemplo .. por qué es necesario ver el error textual y exacto por qué ahí te dice bien claro en que línea se está ocasionado para que lo revises ..

Un saludo,
  #188 (permalink)  
Antiguo 23/03/2005, 15:38
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
página de aplicación:

Código PHP:
 //alta , modificación 
if(isset( [ptp]%4$s[/ptpPOST['nombre']) and isset( [ptp]%4$s[/ptpPOST['profile']))
{
if(isset( [
ptp]%4$s[/ptpGET['id']))
$mmmd->sql$mmmd->sUpdate($tableName, [ptp]%4$s[/ptpPOST, [ptp]%4$s[/ptpGET['id']) );
else
$mmmd->sql$mmmd->sInsert($tableName, [ptp]%4$s[/ptpPOST) );
 
header("location: ..."); //esta es la linea 18


error que me tira:

Código PHP:
WarningCannot modify header information headers already sent by (output started at *********index2.php:25in ************php on line 18 
index2.php

Código PHP:
 $nivel_acceso=10
if (
$nivel_acceso < [ptp]%4$s[/ptpSESSION['usuario_nivel']){
header ("Location: $redir?error_login=5"); //linea 25
exit;

no se que tiene... que raro
__________________
Ignacio

Última edición por ignacio_giri; 23/03/2005 a las 15:45
  #189 (permalink)  
Antiguo 23/03/2005, 16:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
ignacio_giri

Si pones el código fuera de su contexto (por qué extraes la parte que crees que está el error) .. y además me pones **** donde DICE! el error concreto .. así no sacamos nada .. Sólo te recomiendo que leas bien el error e intentes interpretarlo .. El problema te lo está diciendo ahí!!.


Revisa lo que ya te he dicho antes . .un espacio antes o despues de un <? .. o un ?> o un salto de linea .. eso ya proboca "salida" que no puedes usarla . .Si hay archivos externos involucrados tendras que revisar todos. (eso es justamente lo que no se vé por qué pusistes ***********).

Un saludo,
  #190 (permalink)  
Antiguo 23/03/2005, 16:04
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
ok, ahora voy a revisar...

disculpa, puse **** porque te había puesto el codigo tambien allí de cada pagina que tenía el error, ahora voy a revisar los espacios a ver que pasa.

Saludos.
__________________
Ignacio
  #191 (permalink)  
Antiguo 23/03/2005, 16:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Por cierto .. Si usas un ecriptador/ofuscador para PHP . .será mejor que si colocas código PHP aquí en el foro para verlo .. que no lo encriptes, sino complicas su lectura y seguimiento del mismo para evaluar un problem.

Un saludo,
  #192 (permalink)  
Antiguo 23/03/2005, 16:18
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
Gracias por todo Cluster, tu sistema de autentificación no tenía nada que ver con el problema que me estaba pasando, era que estaba usando una variable que la definia despues de usarla y me tiraba cualquier error...

Gracias, segui así y mil disculpas por molestarte con esto que nada que ver...

Excelente tu scritp de autentificación, es la primera vez que uso un sistema pre-hecho que tardo tan poco, parecía un código tan ordenado que lo entendía como si fuera mío...

Gracias por todo, saludos!!!
__________________
Ignacio
  #193 (permalink)  
Antiguo 23/03/2005, 16:57
 
Fecha de Ingreso: marzo-2005
Mensajes: 14
Antigüedad: 19 años, 1 mes
Puntos: 0
Pregunta utilizo el script y necesito ayuda....

hola cluster,

te felicito y te agradezco muchisimo ya que yo estoy utuilizando tu script y me funciona bien.... De verdad muchas gracias....
Quiciera que me ayudaras con unos aspectos ya que conoces... lo que pasa es que el nivel de acceso que tu definiste, lo estoy usando o lo quiero usar para cargar diferentes paginas(dependiendo del acceso), pero no me funciona, se queda cargando ..... te muestro lo que estoy haciendo:

$nivel_acceso=0; // definir nivel de acceso para esta página.
$u_n =$_SESSION['usuario_nivel'];
if ($nivel_acceso != $u_n ){
if($u_n==1){
header ("Location: xxx.php");
exit;
}
else if($u_n==2){
header ("Location: xxyy.php");
exit;
}
else{
header ("Location: error.php?error_login=5");
exit;
}
}


el otro problema que tengo es que quiero mantener no solo una, sino varias paginas bajo el control de la utenticacion, pero tampoco me ha servido....es deicr, lo que quiero es que despues de que el usuario se autentique, muestre una pagina "xxxyyy" y siga navegando hacia "otras pagina"(que se supone que tambien necesitan de autenticacion) y si el usuario no se a autenticado que no deje mostrar esas "otras paginas"...lo que estoy haciendo es lo siguiente:

require ("aut_config.inc.php");
session_start();
if(!$_SESSION[$usuarios_sesion]) {
header("Location: index.php?error_login=5");
exit;
}

pero tampoco funciona!!!.....si puedes ayudarme te lo agradeceria aun mas....

gracias....
  #194 (permalink)  
Antiguo 24/03/2005, 06:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por maec
hola cluster,

te felicito y te agradezco muchisimo ya que yo estoy utuilizando tu script y me funciona bien.... De verdad muchas gracias....
Quiciera que me ayudaras con unos aspectos ya que conoces... lo que pasa es que el nivel de acceso que tu definiste, lo estoy usando o lo quiero usar para cargar diferentes paginas(dependiendo del acceso), pero no me funciona, se queda cargando ..... te muestro lo que estoy haciendo:

$nivel_acceso=0; // definir nivel de acceso para esta página.
$u_n =$_SESSION['usuario_nivel'];
if ($nivel_acceso != $u_n ){
if($u_n==1){
header ("Location: xxx.php");
exit;
}
else if($u_n==2){
header ("Location: xxyy.php");
exit;
}
else{
header ("Location: error.php?error_login=5");
exit;
}
}


el otro problema que tengo es que quiero mantener no solo una, sino varias paginas bajo el control de la utenticacion, pero tampoco me ha servido....es deicr, lo que quiero es que despues de que el usuario se autentique, muestre una pagina "xxxyyy" y siga navegando hacia "otras pagina"(que se supone que tambien necesitan de autenticacion) y si el usuario no se a autenticado que no deje mostrar esas "otras paginas"...lo que estoy haciendo es lo siguiente:

require ("aut_config.inc.php");
session_start();
if(!$_SESSION[$usuarios_sesion]) {
header("Location: index.php?error_login=5");
exit;
}

pero tampoco funciona!!!.....si puedes ayudarme te lo agradeceria aun mas....

gracias....
Usa un switch() en lugar de tantos if() .. vas a "redireccionar" si tal nivel es = a tal valor ..

La validación para otras páginas . .

Código PHP:
require ("aut_config.inc.php");
session_name($usuarios_sesion); // OJO! .. autentificator define NOMBRE DE SESIÓN, debes usarlo siempre
session_start();
if(isset(
$_SESSION[usuarios_id])) {
header("Location: index.php?error_login=5");
exit;

Por lo menos con eso validas que el usuario sea uno autentificado. Pero en ese caso .. mm ¿que sentido tiene "redireccionar" a esa página por nivel del usuario si no lo validas en la página que llegas? ...

Es decir . .deberías validar esa página concreta por el nivel que corresponda su acceso
Código PHP:
require ("aut_config.inc.php");
session_start($usuarios_sesion);
if(
$_SESSION['usuarios_nivel'] == "el que corresponda para la página que sea") {
header("Location: index.php?error_login=5");
exit;

Por otro lado .. esa validación básica sobre la existencia de un usuario validado en el sistema ya lo hace "aut_verifica.inc.php" .. ese script (que se ha de incluir en toda página que use autentificator) ya valida eso mismo .. El nivel de usuario es validado -aparte- y se usa como los ejemplos describen .. no tiene que "repetir" código aparte .. Otra cosa es que alguna página concreta permitas su ingreso sea o no un usuario autentificado (para eso si que tendrías que aislar el código de inicio de sesión y validar o hacer lo que corresponda en función de las variables de sesión que Autentificator te pone a tu disposición u otras que manejes bajo esa sesión tuyas).


Un saludo,

Última edición por Cluster; 24/03/2005 a las 06:48
  #195 (permalink)  
Antiguo 07/04/2005, 09:02
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
puede ser que en Firefox pierda la sesión de logueo???? como puede ser que en Internet Explorer anda...

Saben adonde la pierde... acá... es rarísimo

entro a:

http://www.sub.dominio/admin/index2.php?com=monedas

y despues desde esa pagina sigo el link a:

http://www.sub.dominio.com/admin/ind...m=monedas&id=1

y en vez de hacer lo que tiene que hacer me manda a la página de logueo... adonde estará el error.

En Internet Explorer anda perfecto y en Firefox no....
__________________
Ignacio
  #196 (permalink)  
Antiguo 07/04/2005, 09:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por ignacio_giri
puede ser que en Firefox pierda la sesión de logueo???? como puede ser que en Internet Explorer anda...

Saben adonde la pierde... acá... es rarísimo

entro a:

http://www.sub.dominio/admin/index2.php?com=monedas

y despues desde esa pagina sigo el link a:

http://www.sub.dominio.com/admin/ind...m=monedas&id=1

y en vez de hacer lo que tiene que hacer me manda a la página de logueo... adonde estará el error.

En Internet Explorer anda perfecto y en Firefox no....
Lo primero es confirmar que esté propagando el SID en cookies y revisar tu navegador si acpeta cookies (y a que nivel) .. Por qué por ejemplo IE en sus "niveles de seguridad" define que tipo de cookies se registran automáticamente .. cuales no ... (no uso Firefox .. no sé como trabaja ese tema este .. pero revisalo usando niveles bajo de "seguridad" en el aspecto de la creación de cookies).

Un saludo,
  #197 (permalink)  
Antiguo 07/04/2005, 09:31
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
Bueno, dejame hacer la prueba y despues te comento.
__________________
Ignacio
  #198 (permalink)  
Antiguo 28/04/2005, 17:30
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
hola acabo de descargar tu autentificador y voy a intentar instalarlo, pero despues de leer estas 10 páginas sólo me queda decirte gracias por tu dedicación, sinceramente cluster gracias y allá vooooyyy.
  #199 (permalink)  
Antiguo 28/04/2005, 17:56
 
Fecha de Ingreso: noviembre-2004
Mensajes: 82
Antigüedad: 19 años, 5 meses
Puntos: 0
hola Cluster, adhiero a las felicitaciones, si no es mucho pedirte, podrías poner ej. de como modificar el archivo aut_config.inc.php y el aut_instalar.php o el aut_usuarios.sql , vi en un ejemplo de un tuto de un phpbb2 o un nuke no recuerdo bien, es decir:

// Datos conexión a la Base de datos (MySql)
$sql_host="localhost"; // Host, nombre del servidor o IP del servidor Mysql. (acá http:// www.midominio.com o que?
$sql_usuario=""; // Usuario de Mysql
$sql_pass=""; // contraseña de Mysql

$sql_db=""; // Base de datos que se usará. (acá???)
$sql_tabla=""; // Nombre de la tabla que contendrá los datos de los usuarios
?>


se entiende lo que pido? los que no tenemos ni idea de php ni mysql se nos hace un poquito más complicado y se que tu tuto está bien explicado pero quizás apunta a los que trabajan directamente desde los códigos.

mil gracias y perdón pero somo muchos los que trabajamos desde dw y de códigos nada, aunque reconozco que deberíamos hacerlo.
  #200 (permalink)  
Antiguo 28/04/2005, 18:43
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Hola Cluster

Me parece muy buen script, sin embargo unas notas:

1. $_SERVER['HTTP_REFERER'] ... es una variable que tiende a fallar segun la configuracion del cliente, entonces no es seguro usarla para validar, sin embargo si este sistema se aplica para el area de Administracion de un sitio, entonces esta bien, porque tu te aseguraras que las computadoras desde las cuales estas entrando, esten confugiradas correctamente para no caer en el error del REFERED

2. La base de datos me parece que puede mejorarse:

CREATE TABLE usuarios (
ID smallint(6) unsigned NOT NULL auto_increment,
usuario varchar(16) NOT NULL,
pass varchar(16) NOT NULL,
nivel_acceso smallint(4) unsigned NOT NULL default '0',
PRIMARY KEY (ID),
UNIQUE KEY ID (ID)
) TYPE=MyISAM PACK_KEYS=1;

Yo uso varchar porque, si un usuario tiene como nombre solamente 5 caracteres, entonces solo 5 caracteres ocupara, ademas es mas facil un index sobre este campo.

3. El control de niveles esta bien, pero con ese control pones solamente para ZONAS, pero dentro de una zona existen muchos permisos que unos y otros usuarios no tienes... ejemplo basico:

Niveles:

1 = Atencion a Clientes
2 = Administracio del sitio

Subniveles:

Dentro de Atencion a Clientes existen diversas actividades que no todo el personal puede tener acceso, como:

1. Contestar e-mails con preguntas
2. Editar cuentas
3. Procesar pagos.

Dentro de Administracion del sitio

4. Editar Template de Noticias
5. Borrar Noticias
6. Resetear el servidor

Entonces para estos casos las bases de datos son un poco mas complejas, pero respetando tu diseño actual, podria facilmente ser algo asi:

CREATE TABLE usuarios (
ID smallint(6) unsigned NOT NULL auto_increment,
usuario varchar(16) NOT NULL,
pass varchar(16) NOT NULL,
nivel_accesos varchar(16)NOT NULL,
subnivel_accesos varchar(16) NOT NULL,
PRIMARY KEY (ID),
UNIQUE KEY ID (ID)
) TYPE=MyISAM PACK_KEYS=1

- Un usuario que puede entrar a la zona 1 y a todas las subzonas seria:
nivel_accesos = "1"
subnivel_accesos = "1,2,3"

- Un usuario que puede entrar a la zona 1 y a zona 2 completamente, pero en cliente solo puede procesar pagos seria:
nivel_accesos = "1,2"
subnivel_accesos = "3,4,5,6"

Es decir, el campo nivel acceso te da entrada a una zona, y el subnivel te dice de esa zona a cuales puede entrar.

Respetando tu diseño de todo en una tabla esa seria la forma, en PHP lees los permisos y haces un split de las opciones y listo, tienes los permisos del usuario, estos permisos los pones en session, y en cada pagina revisas que el usuario tiene el acceso correcto para esa pagina en especial.

Bueno, el sistema que te digo es muy parecido al que estoy utilizando yo ahortia y me ofrece mucha flexibilidad, sin embargo es un poco mas complejo debido a otros parametros que debo respetar.

Espero que te sirvan mis comentarios, y repito muy buen script, pero creo que pudes mejorarlo en esos puntos.

Suerte!!
  #201 (permalink)  
Antiguo 29/04/2005, 07:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Neuron_376 ..

1) .. Tienes toda la razón .. de hecho ya lo había mencionado alguna vez .. Se trata simplemente de elminiar esa pre-validación que viene bien para aportar la funcionalidad de "devolver al formulario de login" los errore que puedas tener en el mismo. La seguridad no se vé afectada en absoluto .. pues para eso ya se validan las sesiones que se usan ...

2) ... Bueno .. eso ya va al gusto del "consumidor" .. En realidad el "ejemplo" sólo pretende dar una breve explicación al uso de sesiones con un ejemplo práctico.

3) .. Como comentarios .. OK, pero la filosofía del mismo ya la he descrito por aquí alguna vez y tambien en la documentación. Sólo se trata de validar "zonas" .. nada más. Es a nivel básico, de hecho mucha gente lo ha usado como base para desarrollar su sistema própio; añadiendo funcionalidades como que los usuarios se registren .. tablas relacionadas para crear un perfil del usuario (con más datos que los de la "cuenta" en sí ..) .. registro de eventos (login ..) .. control de concurrencia (que un usuario no pueda acceder más que determinado equipo en una red (IP/nombre máquina) o sólo una cuenta->un uso (no simultáneos desde otras estaciones) .. etc .. etc ..

Por mi parte el script -es así- no tengo intenciones de añadir esas opciones, pero si que es bueno conocer esos comentarios por si alguien se encuentra en una situación similar y dese implementarlo .. adelante. Ya hace tiempo que "abandoné" el desarrollo del mismo (sólo vería temas -críticos- a nivel seguridad por ejemplo si los hubiese ..). Probablemente podría dedicar esfuerzos en una versión "Pro" con todas estas funcionalidades para crear un autentico sistema de "autentificación" versatil .. Pero como ya he comentado .. el script es un ejemplo de "uso" de sesiones aplicado a un ejemplo concreto más que nada; fijate por ejemplo lo "descuidado" que están los scripts de gestión de usuarios en sí (para crearlos .. etc) .. no era ese el objetivo pero .. es cierto que "había" que hacer algo así mínimo para demostrar el funcionamiento del miso en su conjunto.

Insito una vez más, grácias por todos los comentarios.

Un saludo,

Última edición por Cluster; 29/04/2005 a las 11:34
  #202 (permalink)  
Antiguo 29/04/2005, 09:22
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
hola cluster me parece que te equivocaste al citar a martina esa respuesta seria para neuron 376. creo
  #203 (permalink)  
Antiguo 29/04/2005, 11:10
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Hola

Una nota mas... para el error de global='on' o globals='off', tengo entendido que esta directiva solamente hace esto:

Con global='ON'

$_SESSION["Var1"] = 3

$Var1 = 4

echo $_SESSION["Var1"] // Esto imprime 4, porque con global='on', todas esas variables pueden ser accesadas con el puro nombre.

Con global = 'off'

$_SESSION["Var1"] = 3

$Var1 = 4

echo $_SESSION["Var1"] // Esto imprime 3, porque con global='off', no accesas a esas variables con el puro nombre.

Bueno, yo tengo entendido eso, entonces lo que hago para no tener problemas con esa directiva es que a mis variables de session siempre les pongo un nombre especial, por ejemplo:

//Variable normal tipo entera
intUsuarioID

//Variable tipo sesion.. lo que cambia es que al tipo le agrego la s
intsUsuarioID

Entonces en mi script yo nunca uso nombres de variables de session revueltas, es decir

$_SESSION["intsVar"] = 4;

$intVar = $_SESSION["intsVar"]

$intVar = $intVar + 1

$_SESSION["intsVar"] = $intVar;

Bueno, esa es una logica de escritura que desarrolle basado en ese problema del global='on', entonces creo que de esa forma nunca tienes que preocuparte por afectar variables de session de forma incorrecta, lo mismo hago con cookies tambien, para estar seguro siempre, con POST y GET no hago eso, simplemente que siempre recupero el valor en una variable local y nunca uso el nombre de post y get como:

$_COOKIES["intcVar1"]

$strNombre = $_POST["Nombre"];
$strNombre = $_GET["Nombre"];

De esa forma no tengo problemas con la configuracion de esa variable... mi duda seria, si estoy olvidando algo y con el global = 'on' y 'off' se modifican otros criterios que deberia tener en cuenta para evitar errores futuros.

Gracias.
  #204 (permalink)  
Antiguo 29/04/2005, 11:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Con global='ON'

$_SESSION["Var1"] = 3

$Var1 = 4

echo $_SESSION["Var1"] // Esto imprime 4, porque con global='on', todas esas variables pueden ser accesadas con el puro nombre.

Con global = 'off'

$_SESSION["Var1"] = 3

$Var1 = 4

echo $_SESSION["Var1"] // Esto imprime 3, porque con global='off', no accesas a esas variables con el puro nombre.
No es exactamente así ..

Con register_globals a ON .. $_SESSION y cualquier "indice" (como array que es) que llames tendrá el valor definido ..

El hecho de usar a ON o a OFF afecta más bien a que si usas $_SESSION['variable'] == "algo" y en otro script accedes a $variable .. el valor de esta lo obtendras llegue donde llegue .. por eso si haces algo tipo (suplantando el método usando GET) tipo:
nose.php?variable="valor_Adulterado" .. pese que lo has definido con $_SESSION .. es probable (no he probado esto exactamente . sólo con session_register() si que sé que ocurre) que tomes el valor que introduces por GET .. (haz tus pruebas y nos comentas).

revisa también los comentarios de:
http://www.php.net/manual/en/ref.session.php
.. hay un documento en PDF interesante para que revises (en la versión ingles):
http://www.acros.si/papers/session_fixation.pdf

Un saludo,
  #205 (permalink)  
Antiguo 29/04/2005, 13:45
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Bien

Ok, si tenia entendido que register globals afecta a todos los arreglos globales, puse session como ejemplo... pero bien, entonces lo que estas diciendo es esto:

1. pagina1.php

//Declaro variable de session
$_SESSION["intsVar"] = 2

2. pagina2.php

//Recibe como parametro ?insVar=5
echo $_SESSION["intsVar"]; //Va a imprimir 5 porque globals esta en ON ?

Dime si esa es la duda, porque me pusiste a pensar, si alguien conoce el nombre de mis variables de session, entonces con global = 'on' tendre un hueco de seguridad.

Bien, dime si ese es el caso, si entendi bien eso es lo que piensas que puede pasar, de todas formas lo probare y les dire que obtuve
  #206 (permalink)  
Antiguo 01/05/2005, 00:23
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Resultado de la prueba

Ok, lo probe...

prueba.php?sesionvar=10&getvar=a

echo $_GET["sesionvar"] . "<br>"; // Imprime 10
echo $_SESSION["sesionvar"] . "<br>"; // Imprime valor real 1
echo $_GET["getvar"] . "<br>"; // Imprime a
echo $sesionvar . "<br>"; // Imprime 1
echo $getvar . "<br>"; // Imprime a
echo $_SESSION["sesionvar"] . "<br>"; // Imprime 1
$sesionvar = $_GET["sesionvar"]; // Se asigna directo al arreglo de session
echo $_SESSION["sesionvar"] . "<br>"; // Imprime 10

Entonces bien, al parecer por la misma razon de evitar esta falla de seguridad, cuando utilizas register_globals = on, las primeras asignaciones de variables ocurren directo para Session, Get y Post quedan en segundo termino, entonces la variable local creada apunta hacia session primero, si no existe entonces apunta hacia get como ocurre en el ejemplo.

Esto asegura que el caso que comentabas Cluster no esta ocurriendo, que bueno, porque hubiera sido una falla de seguridad barbara, entonces bien, si queremos preparar nuestros scripts para no tener problemas con register_globals bastara con poner atencion de como usamos nuestras variables en el codigo, gracias.

Suerte!!
  #207 (permalink)  
Antiguo 03/05/2005, 23:15
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Excelente !

Hola Cluster
Esto es justamente lo que estaba buscando... validar zonas. Estaba posteando por aquí hasta que me crucé con tu script, MUCHAS GRACIAS.
Te consulto algo:
Yo quiero aplicar restricciones por niveles al panel del Admin, es decir, que haya zonas dentro del panel de administración donde se necesite cierto nivel para acceder. Estoy trabajando sobre una web al "tanteo" porque los scripts php están encriptados y no conozco las variables ni los nombres reales de los archivos.
Entonces... yo he agregado zonas al panel... ahí perfecto... aplico tu Autentificator Cluster y todo bien pero... en las secciones originales que apuntan a algo como http://www.misitio.com/admin.php?p=4... habría una manera de aplicar tu Script ???
Me parece que no pero sé poco y nada... necesito tu ayuda por favor.
Cariños

Última edición por Suyta; 04/05/2005 a las 11:30
  #208 (permalink)  
Antiguo 04/05/2005, 06:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No entendí que es eso que dices de trabajar al "tanteo" .. Como ya has visto .. para realmente autentificar un script o porción de código .. primero debes tener acceso a ese script (archivo) y código como para poder insertar el código que llama a aut_verifica.inc.php ... y las validaciones que necesites en función de tu nivel de acceso que tiene el usuario en la sesión activo ($_SESSION['usuario_nivel']) donde corresponda.

Si no tienes acceso a esos scripts por A o B motivo .. no te sirve Autentificator (en su defecto tendrías que usar un .htaccess y .htpassword ...para hacer autentificación HTTP (si es que usas Apache como servidor HTTP)).

Un saludo,
  #209 (permalink)  
Antiguo 04/05/2005, 11:23
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Gracias por tu respuesta Cluster.
Digo "al tanteo" porque debo agregar algunas utilidades y ciertas restricciones sobre una web pre-armada con php encriptados, de manera que no sólo no puedo acceder al código sino que ni siquiera sé el nombre real de cada archivo.
Los procesos que agregué (con mucho esfuerzo) los puedo controlar pero sobre lo ya hecho parece que es imposible.
Y creo que en este caso ni siquiera podría usar .htaccess pero deberé leer más al respecto.
Más allá de todo esto tu Autentificator es de 10
Cariños.
  #210 (permalink)  
Antiguo 05/05/2005, 11:10
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
Cluster!

estoy en tu sistema de logueo...

me logueo perfectamente, las variables y sessiones las toma perfecto...

pero que paso ahora... en un formulario para agregar cosas a la BD... tiene un action="agregar.php" y ese "agregar.php" tiene un Header (Location:...)... y no lo hace... lo quiere hacer, pero pierde el logueo y me va de nuevo a la página de identificacion.

que debería hacerle al "agregar.php" para que esto ante como debe ser?

Saludos!!!
__________________
Ignacio
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.
Tema Cerrado

SíEste tema le ha gustado a 10 personas




La zona horaria es GMT -6. Ahora son las 04:57.