Login

KoRMuZ

Quiero hacer un sistema de login de usuarios para el admin de mi web para poner noticias y tal, lo tengo todo hecho solo me falta la autentificación de usuarios. He mirado un par de manuales pero no consigo hacerlo, si sabeis de alguno que venga bien explicado, lo agradecería:)

EnTe

yo tngo por ahi un script de validacion de usuarios, pasate por mi perfil y te lo paso ok? Salu2

uNbiG

php?

Whose

¿De que lenguaje hablas? Especifica donde te has atrancado.

KoRMuZ

Es php, pero ya he encontrado lo que necesitaba, gracias :).

El problema es ke soy muuuuy novato en php y no tenia ni idea de como hacer un sistema de autentificacion de usuarios. Lo que habia conseguido hacer hasta hoy era solo la base de datos en mysql, y el script pa ver noticias, añadirlas,modificarlas y eliminarlas pero no sabia como hacer un sistema de administracion para la web.

gracias d todas formas.

E

#1 Cuando lo hagas ojito con las inyecciones SQL.

No hagas la típica consulta:

"SELECT 1 FROM usuarios WHERE usuario = '"+ variable usuario +"' AND password = '"+variable password+"'"

Porque te la cuelan doblada (famoso ' or '1'='1)
Es un error que todavía lo tienen muchas páginas (y grandes páginas de empresas!) puesto que la mayoría de los programadores web suelen ser muy mancos con el SQL (con perdón, pero es una realidad) y dejan que Dreamweaver les haga el trabajo. Y Dreamweaver hasta su versión 4.0 sino recuerdo mal, componía la autenticación con esa sentencia.

KoRMuZ

No estoy usando dreamweaver, bloc d notas casi todo, solo algunos forms con el dreamweaver y listo. Pero si m explicas k es eso k dices, mejor, asi no m la cuelan otro dia. :]

E

Pues está bastante claro en la sentencia que he puesto. Pero la explico para los neófitos en SQL. Veámosla una vez más:

"SELECT 1 FROM usuarios WHERE usuario = ' " + variable_usuario+" ' "

Supongamos que variable_usuario es PEPE, ok? Veamos la sentencia que ejecutaría el motor de la base de datos:

"SELECT 1 FROM usuarios WHERE usuario = 'PEPE'

Ahora bien, supongamos que yo escribo lo siguiente en el campo login: ' or '1'='1
¿Qué sucedería? Pues tan fácil como sustituir. Esta es la sentencia que analizaría el motor:

"SELECT 1 FROM usuarios WHERE usuario = '' or '1'='1'

Al cerrar la sentencia con la comilla simple, el motor evalúa la sentencia y para el significa lo siguiente:

Selecciona el literal 1 de la tabla usuarios cuando usuario sea igual a nada ó 1 sea igual a 1.

Justo aquí, en 1=1 es donde se la cuelas al motor, ya que or 1=1 siempre va a devolver true.

Se puede jugar también con la columna usuario de la tabla y el operador like.

Esto es lo que se llama inyección SQL, y es tan fácil com cerrar la sentencia y escribir, por ejemplo, una expresión lógica que siempre sea cierta.

La solución? Eliminar las comillas simples, no dejar escribirlas, o simplemente separar las consultas de usuario y password en dos distintas.

Espero que lo hayas entendido. Sino da igual, tu cuando tengas terminada la parte del login me mandas un mensaje que la pruebo xDDDD

Salu2

Usuarios habituales

  • ElTutor
  • KoRMuZ
  • Whose
  • uNbiG
  • EnTe