PDA

Ver la Versión Completa : Reconocimiento Y Autentificacion Usuario


alachaise
19-11-2004, 21:16:19
como hago un sistema que me reconozca un usuario y si esta registrado me entre a una pagina determina y si no esta registrado que se registre y si me navega como usuario no registrado no tenga acceso a algunas paginas de mi sitio me podria mandar un ejemplo que funcione a la direccion de correo pm.venezuela@infomed.sld.cu (pm.venezuela@infomed.sld.cu) o alachaise@uccm.sld.cu (alachaise@uccm.sld.cu) se los voy agradecer http://foro.hlg.sld.cu/images/smiles/icon_biggrin.gif saludos alexander

kayetano
20-11-2004, 17:29:23
Hola

Para eso debes usar sesiones, pides el "usuario" y la "clave" y compruebas que exista en tu base de datos, si existe creas una sesión y creas una variable de sesion donde puedes indicar que esta registrado. Para limitar el acceso a cualquier página solo tienes que comprobar que exista esa variable.
Para más seguridad, una vez comprobado que existe el usuario guarda en la sesión los datos de acceso (usuario y clave) y cuando quiera acceder a una página restringida solo tienes que comprobar si esta registrado con los datos de la sessión. ... bueno no se si me he esplicado bien pero espero que te sirva.

Eso de mandar respuestas a correos privados lo veo incompatible con un foro, aqui estamos para intentar ayudar a todos, y si te contestan por un correo privado impedimos que el resto de la gente pueda resolver dudas parecidas.

Pues ya sabes mira el manual de PHP y busca la sección de sesiones y al ataque.

kael
25-11-2004, 04:25:09
Este es el codigo que he hecho y modificado , a mi me anda perfecto .... claro no es el que uso pero de seguro te va a servir.

Primero que nada :

session_start(); // Con esto inicializamos la session

if($_POST['enviar']) { //Verificamos si se envio el formulario
$nick = trim($_POST['nick']); //Sacamos los espacios
$pass = trim($_POST['pass']);

if(($nick=='') || ($pass=='')) { //Si los campos estan vacios ...
echo "Debes de rellenar todos los campos!";
} else { //seguimos con el script
$query = mysql_query("SELECT * WHERE campodelnick='$nick' AND campodelpass='$pass'"); // Sacamos el usuario y el password
$datos = mysql_fetch_array($query);
if(($nick == $datos[campodelnick]) && ($pass == $datos[campodelpass])) { // Si los datos que pusieron son iguales a los de la db ...
$_SESSION['nick'] == $nick;
$_SESSION['pass'] == $pass;
/* Ahi creamos las sesiones nick y pass si quieres crear otra con otro campo solo pones
$_SESSION'['nombredelasesion'] == $datos['nombredelcampoenladb'];
*/
header("Location : paginaalaquesequieraredirijir.php");
} else {
echo "Login Incorrecto!";
} } } else {

if((isset($_SESSION['nick'])) || (isset($_SESSION['pass'])) {
echo "Bienvenido ".$_SESSION['nick']." !";
/* o sino puedes redirijir a otra pagina por ejemplo :
header("Location : cp.php");
*/
} else {

<form method='post' action='".$_SERVER['PHP_SELF']."'> // Inicio del Formulario
Nikc : <input type='text' name='nick'><br> // Input donde el usuario va a indicar su nick
Password : <input type='password' name='pass'><br> // Aqui el password del usuario
<input type='submit' name='enviar' value='Ingresar'>
</form> //Cerramos el formulario
}
}

Espero que te sirva , si ves que te da algu error me avisas

kayetano
25-11-2004, 08:32:31
Hola

Dos retoques:
1.
$query = mysql_query("SELECT * WHERE campodelnick='$nick' AND campodelpass='$pass'"); // Sacamos el usuario y el password
$datos = mysql_fetch_array($query);
if(($nick == $datos[campodelnick]) && ($pass == $datos[campodelpass])) { // Si los datos que pusieron son iguales a los de la db ...
...

yo lo dejaría asín
$query = mysql_query("SELECT * WHERE campodelnick='$nick' AND campodelpass='$pass'"); // Sacamos el usuario y el password
if(mysql_num_rows($query)) {
...

Si realizas una consulta con un "nick" y un "pass" y obtienes un resultado esta claro que va a cumplir la condicion de que son iguales a los buscados ya que lo obligas en la clausula "WHERE".

2.

header("Location : paginaalaquesequieraredirijir.php");

Yo siempre termino un "Location" con un "exit"

header("Location : paginaalaquesequieraredirijir.php");
exit();

Si no lo pones así, es posible que se ejecute código no deseado justamente despues del "Location".

Mick
26-11-2004, 23:18:30
Hola
Si realizas una consulta con un "nick" y un "pass" y obtienes un resultado esta
claro que va a cumplir la condicion de que son iguales a los buscados ya que lo
obligas en la clausula "WHERE".

Tal como esta el codigo, si se eliminan la comprobacion de nick y password posterior y no estan activadas las magic_quotes en la configuracion de php, tendriamos un agujero de seguridad tipico por injeccion de sql, cualquiera podria entrar sin saber el password, bastaria conocer cualquier nombre de usuario para entrar.

Saludos

kayetano
29-11-2004, 11:15:28
Hola

Hombre, no hay que ser alarmistas, si miramos al principio del código de nuestro amigo kael vemos lo siguiente:

if( $_POST['enviar'] ) { //Verificamos si se envio el formulario
$nick = trim($_POST['nick']); //Sacamos los espacios
$pass = trim($_POST['pass']);

Con esto ya está obligando a posibles hackers a simular una llamada 'post' a nuestra página, ademas de quitando los espacios con lo que muy posiblemente se vuelva inservible la porción de código sql que se intente añadir.
Se podría retocar un poquito y quedaría mucho mejor asin:

if( $_POST['enviar'] ) {
$nick = AddSlashes( trim( strip_tags( $_POST['nick'] ) ) );
$pass = AddSlashes( trim( strip_tags( $_POST['pass'] ) ) );

Elimino las posibles marcas HTML y PHP, elimino espacios y por ultimo marco con barras los caracteres que lo necesiten.

Ahora te propongo yo una cosa, amplia tu respuesta que es más alarmista que de utilidad y explica ¿que es un "agujero de seguridad tipico por injeccion de sql"?, formas de solucionar este problema y ¿donde ves ese agujero en este código?.

Sería interesante que habrieras un nuevo hilo para este tema.

Salu2

Mick
29-11-2004, 13:29:21
Hola
Hombre, no hay que ser alarmistas, si miramos al principio del código de nuestro amigo kael vemos lo siguiente:


No entiendo como puedes decir que "no hay que ser alarmistas", el agujero de seguridad por injeccion de sql del codigo propuesto es grave y "de libro". Con ese codigo cualquiera puede entrar suplantando a cualquier usuario o incluso como administrador si existen un usuario de ese tipo, y sin necesidad de utilizar ninguna herramienta especial ni programar nada.

Realizando cualquier busqueda en google se encuentran docenas de referencias y explicaciones sobre ese problema.

Tampoco es necesario ser un superhacker para entrar, ni simular un post ni usar nada especial, ya que pides ejemplos, te pondre uno, a pesar de que no deberia ya que segun la legislacion de mi pais (España) estaría cometiendo un delito, pero siendo un tipo de error bastante tipico y ampliamente publicado en internet, espero que no haya ningun problema:

Simplemente ir a la pagina en cuestion con cualquier navegador web y cuando pida el nombre de usuario y contraseña teclear:

Username : admin
Password : XXX' or '1'='1

Y "voila" ya hemos entrado en la pagina como administrador, o sustituyendo "admin" por cualquier nombre de usuario valido, suplantamos tranquilamente a ese usuario.

Saludos
Miguel

kayetano
29-11-2004, 14:02:37
Hola

Yo sigo opinando que es mucho mejor dar soluciones que alarmar a la gente.

Pienso que tu primera contestación debería haber sido del tipo:

He detectado un problema de seguridad en ese código y es bla, bla, bla y bla
y lo puedes solucionar de la siguiente manera bla, bla, bla, bla y bla
Os aconsejo a todos que tengáis mucho cuidado con el tema de la seguridad porque bla, bla, bla, bla y bla

Pero en cambio has hablado del peligro del "agujero de seguridad tipico por injeccion de sql" pero no has contado que es eso, ni como lo puede utilizar un hacker para entrar en nuestra web, y si en la legislación de tu pais prohibir decir estas cosas, que lo dudo, debes dar la solución para que todos aprendamos a hacer webs mas seguras.

Como veo que estas muy puesto en el tema, y es algo muy importante en las webs, te pido que nos hagas un breve resumen de que es esto, como evitarlo y donde podemos documentarnos más ampliamente.

Mick
29-11-2004, 17:23:47
Lo siento, pero en muchas ocasiones no tengo el tiempo para dar respuestas largas, creo haber dado datos suficientes para que quien le interese del tema pueda buscar en google informacion mas extensa, no se trata de una vulnerabilidad extraña, de modo que esta bien documentada en internet.
Mi opinion es que, es preferible dar algo de informacion que ninguna.

Intentare dar una respuesta mas amplia, cuando tenga algo de tiempo.

Saludos

PD: Y si, lo de las legislaciones de distintos paises europeos se esta poniendo muy chungo, van a la zaga de EEUU en estos temas, dar informacion o herramientas que permitan romper protecciones se ha tipificado como delito, otra cosa es que no se aplique, pero con la ley en la mano es asi :(.

roman
29-11-2004, 17:43:50
¿Podrían indicar con exactitud en qué países la legislación dice tal cosa?

kayetano tengo entendido que es de España y Mick menciona a la unión europea a la que pertenece España.
Aunque en muchas ocasiones las leyes son ridículas este caso particular me parecería francamente absurdo, ¿cómo se supone que legalmente podamos aprender a escribir código seguro si tal aprendizaje está prohibido?

// Saludos

Mick
29-11-2004, 21:12:19
Segun mi conocimiento el pais con la legislacion mas dura en Europa es Francia:
En este pais una empresa de antivirus que publicitaba que su antivirus detectaba el 100% de los virus y era totalmente seguro, esta intentado enchironar a un cientifico que demostro e informo publicamente en su pagina web personal que ese antivirus no era tan seguro como decian, le pueden caer hasta 2 años de carcel.

http://www.hispasec.com/unaaldia/2034

En España con la nueva ley, la posesion de cualquier software o mecanismo destinado especificamente a desproteger lo que sea, pasa a ser delito.
Eso en principio significa que si pego 4 lineas de codigo que muestren como se desprotege una web o cualquier otra cosa, estoy publicando un software destinado especificamente a desproteger algo, si la mera posesion de ese software es delito, publicarlo debe ser muchisimo mas grave todavia !!!

Saludos

kayetano
30-11-2004, 08:50:07
Hola Micki

Sigues siendo muy ALARMISTA. Eso que dices de la posesión de software para desproteger es totalmente verdad, pero la lay hay que interpretarla y no decir que todo es delito.

Te puedo asegurar, ayer lo consulte con un amigo abogado, que el ayudar a crear sistemas mas seguros no es delito, y por supuesto, el comentar cualquier vulnerabilidad de un sistema sin animo de delinquier no es delito.

Si aplicaramos la ley como tu dices, si una empresa crea un sistema de acceso condicional no puede solicita a otra que verifique su buen funcionamiento porque sería un delito, y te puedo asegurar que eso no es así.

Ten en cuenta que existe un GRANDÍSIMA diferencia entre que una persona te solicite ayuda sobre un tema de seguridad y que tu intentes solucionárselo y que una persona con intenciones maliciosas intente acceder a un sistema "seguro".

Te reugo que pienses un poco o que te informes con un abogado antes de soltar estas bombas en un foro de discusión. No es nada saludable.

Y por último, me sorprende que tu respuesta definitiba ( despues de 4 respuestas ) sea "NO TENGO TIEMPO BUSCA EN GOOGLE", da que pensar.

Mick
30-11-2004, 14:55:33
Y por último, me sorprende que tu respuesta definitiba ( despues de 4 respuestas ) sea "NO TENGO TIEMPO BUSCA EN GOOGLE", da que pensar.

No es lo mismo dar unas respuestas rapidas, de unas pocas lineas que lleva poco mas de un minuto, que desarrollar un tema en profundidad que puede llevar mucho tiempo.

Es el primer foro que me encuentro en el que los propios moderadores echan en cara a las personas que intervienen en los foros, que dedican demasiado poco tiempo a las respuestas, y que deciden en que forma y como deberian ser las respuestas.

Ha habido muchos threads discutiendo el problema de que muchas personas con dudas, esperan encontrarse las respuestas "masticadas", e incluso llegan a insultar o menospreciar a quien aportan respuestas si estas no les valen o no les convencen. Realmente no me esperaba encontrar esa misma actitud entre los moderadores de los foros.

Obviamente crees que si tengo tiempo, pero no me da la gana de aportar mucho mas de mi tiempo a desarrollar las respuestas, actitud que segun tu es reprobable: Que desfachated alguien que solo dedica 2 minutos de su tiempo a responder cuando bien podria dedicarle media o una horita al tema,y aun por encima en lugar de buscar el mismo en google y aportar links obliga al que pregunta a realizar ese duro trabajo !!!

Bueno, si las normas del foro para los que responden son esas, no te preocupes, procurare responder solo cuando tenga un par de horitas libres,
para desarrollar adecuadamente los temas, no vaya a ser que me echen en cara que le dedico poco de mi tiempo a las respuestas.

Saludos
Miguel

kayetano
30-11-2004, 18:11:10
Hola

Perdona si te he molestado, pero creo que te lo has tomado por el lado malo


No es lo mismo dar unas respuestas rapidas, de unas pocas lineas que lleva poco mas de un minuto, que desarrollar un tema en profundidad que puede llevar mucho tiempo.
Solo he dicho que pusieras una breve esplicación y un enlace donde encotrar mas info.

Es el primer foro que me encuentro en el que los propios moderadores echan en cara a las personas que intervienen en los foros, que dedican demasiado poco tiempo a las respuestas, y que deciden en que forma y como deberian ser las respuestas.
Yo no echo nada en cara a nadie, simplemente doy mi opinión. Yo intento, y supongo que todos, dar un respuesta rápida pero a la vez dar la mejor info posible, y por supuesto me gustaría que todos intentaran hacer lo mismo.
Además no suelo dar codigo terminado, suelo dar alguna que otra línea o algo con lo que se oriente y que el que tiene la duda se preocupe en informarse.

Obviamente crees que si tengo tiempo ...
Supongo que todos tenemos nuestro trabajo y el colaborar supone un esfuerzo para todos. Yo personalmente te agradezco tu colaboración.

.. actitud que segun tu es reprobable ..
En este punto te tengo que decir que SI, hay muchas respuestas con muy buena voluntad que crean mas dudas que resuelven y hay que intentar evitar eso. Yo prefiero contestar a poco y lo mejor que pueda que a muchas y no dar soluciones.

.. si las normas del foro para los que responden son esas..
Esto es algo extremista y totalmente fuera de sitio, NADIE a dicho nada de normas. Si quieres contestar contestas y si no quieres no contestas, pero no digas que yo he puesto una norma, y menos aún que te obligo a nada, simplemente he dado mi opinión.

Creo que te has tomado un consejo como un insulto y no era mi intención. Te pido nuevamente disculpas por mis comentarios y te ruego que siguas colaborando en esta sección todo lo que puedas, ya que no somos muchos. Me considero una persona muy exigente y es posible que esto haya influido en mis respuestas.

Por mi parte no voy a realizar ningún otro comentario sobre este tema.

kinobi
30-11-2004, 21:08:33
Hola,

Es el primer foro que me encuentro en el que los propios moderadores echan en cara a las personas que intervienen en los foros, que dedican demasiado poco tiempo a las respuestas, y que deciden en que forma y como deberian ser las respuestas.
Caes en dos errores:

1. La generalización: "Es el primer foro que me encuentro en el que los propios moderadores...", cuando la diferencia de opinión la tienes con un único moderador.

2. Por lo que he podido ver, Kayetano mantiene una diferencia contigo sobre la manera como se responde, pero lo hace a título de usuario de los foros, no como moderador, y mucho menos decidiendo en que forma y como deberian ser las respuestas. No decide, opina; otra historia es que no estés de acuerdo con esa opinión.

Ha habido muchos threads discutiendo el problema de que muchas personas con dudas, esperan encontrarse las respuestas "masticadas", e incluso llegan a insultar o menospreciar a quien aportan respuestas si estas no les valen o no les convencen. Realmente no me esperaba encontrar esa misma actitud entre los moderadores de los foros.
Nuevo error: que un moderador (que es usuario también de los foros) tenga una opinión particular sobre un determinado tema, no lo convierte en opinión unánime de todos los moderadores.

Bueno, si las normas del foro para los que responden son esas,...
No, no existe ningún tipo de norma sobre la extensión y detalle que debe tener una respuesta, o el tiempo y esfuerzo que emplea quien responde.

Personalmente, estoy mucho más próximo a tu posición que a la de Kayetano; es decir, prefiero dar indicaciones de cómo obtener la solución (o dónde encontrarla) a respuestas demasiado detalladas. Ahora bien, desviar el asunto a actitudes inexistentes de un moderador (o del equipo de moderadores) y a normas, también inexistentes, sobre cómo deben ser las respuestas, es injusto y alejado de la realidad. Claro, que esa es sólo mi opinión. Si tú quieres exponer alguna queja, digamos "formal", sobre este asunto, estamos, cómo no, dispuestos a atenderte.

Saludos.

Mick
30-11-2004, 23:40:05
Me disculpo con el resto de moderadores que no tienen que ver con este tema, una vez releido mi post y como bien ha dicho kinobi he generalizado el tema, mi intencion era resaltar que la actitud con la que no estoy de acuerdo venia de uno de los moderadores, y no de un usuario normal.

Lo que no puedo aceptar es que se indique que lo dicho por kayetano era en calidad de usuario, si se entra como moderador hay que tenerlo siempre presente, no es en absoluto lo mismo una afirmacion hecha por un moderador que por un usuario, para esos casos es mejor tener un segundo nick como usuario normal.

Tampoco puedo aceptar que alguien logeado como moderador y por lo tanto actuando como tal, afirme que considera reprobable que la gente no le dedique el suficiente estudio y tiempo a las respuestas, olvidando que todo aquel que responde en los foros, lo haga con mas o menos acierto me da igual, lo hace voluntariamente, aportado su tiempo de forma desinteresada, sea 1 minuto o 2 horas.

Con esa actitud lo unico que se consigue es que la gente deje de responder,
nadie se molestara en dar respuestas, si aun por encima de "perder" algo de su tiempo con ellas, sabe que lo mas probable es que el moderador se queje
si no esta todo lo completa que el moderador estime, o no se ajusta de forma totalmente exacta al tema que se pregunta, o cuidado con decir algo como "busca en google por las palabras: Sql injection" ;).

Saludos

kinobi
01-12-2004, 00:22:01
Hola,

Lo que no puedo aceptar es que se indique que lo dicho por kayetano era en calidad de usuario,...
Puedes no aceptarlo, pero yo no veo en ninguna parte de sus mensajes que esté obligándote a responder de determinada forma o a abstenerte de responder.

Personalmente, todas mis participaciones en estos foros (incluida ésta) son siempre en calidad de usuario "normal" (por llamarlo de alguna forma), y sólo cuando tomo alguna medida en relación al mantenimiento de los foros lo hago bajo ese estatus "especial" (también por llamarlo de alguna forma) denominado moderador.

...si se entra como moderador hay que tenerlo siempre presente,
Y se tiene, no lo dudes. Muchos usuarios de estos foros desconocen que los moderadores tenemos un foro especial (oculto al resto de usuarios) donde debatimos muchos asuntos y situaciones sobre el funcionamiento de estos foros. Te puedo asegurar que no se toman decisiones arbitrarias ni a la ligera. Y nosotros nos criticamos y autocriticamos a nosotros mismos, e intentamos rectificar allí donde podamos haber cometido errores; cierto, otro asunto es que siempre lo consigamos.

...no es en absoluto lo mismo una afirmacion hecha por un moderador que por un usuario,...
Bueno, es tu opinión, pero una opinión (e insisto en el término opinión) en estos foros tiene el mismo valor diga quien la diga.

...para esos casos es mejor tener un segundo nick como usuario normal.
¿Debería proporcionar el segundo nick una especie de anónimato respecto al identificador de usuario moderador, de forma que ambos no pudiesen ser relacionados? Der ser así, soy yo el que no lo acepta; mis opiniones (como usuario) llevan nombre y apellidos, y no voy a esconderme por ellas, y tampoco pienso hacerlo como "moderador". Y si no es así: ¿qué sentido tiene tener dos identificadores para una misma persona?

Un moderador no tiene "infalibilidad" frente a las opiniones que publica, y éstas están sujetas a la crítica como las de cualquier otro compañero. Tú lo estás haciendo aquí, y yo comparto en gran medida tu opinión sobre la manera de responder a una consulta, contrario en parte a la opinión de Kayetano, demostrando que este no es asunto de moderación. Existen muy pocas normas en estos foros (recogidas en la Guí de estilo) y fuera de la tarea de vigilar el cumplimiento de ellas, los moderadores somos usuarios "normales".

Tampoco puedo aceptar que alguien logeado como moderador y por lo tanto actuando como tal,...
Te remito a todo lo anterior.

Saludos.