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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Pregunta]: Escucho sugerencias (Validar email)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Pregunta]: Escucho sugerencias (Validar email)  (Leído 2,407 veces)
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
[Pregunta]: Escucho sugerencias (Validar email)
« en: 1 Octubre 2019, 08:10 am »

Buenas noches,
estaba haciendo un sistema para validar email donde se enviará un correo electrónico con un código de verificación que el usuario deberá enviar por medio de un formulario que este a su vez si el código es correcto validará su email y podrá usar la aplicación...
Ahora sería lógico pensar que a la larga van a quedar cuentas in-activas de usuarios que nunca validaron su dirección de correo, o crearan correos al azar "fasdfas@gmail.com", etcétera... y nunca van a validar estos emails, entonces pensé cual sería la mejor manera para evitar estas cosas.

La solución que se me ocurrió fue no evitarlas, sino que cada x tiempo se borren todas las cuentas de usuarios con el correo sin verificar, pero esto no lo se hacer así que mejor sería que al ir al panel administrativo exista un botón que diga "Eliminar cuentas no verificadas (25)" 25 sería la cantidad de cuentas que no se validaron (Un poco de diseño al botón xD)

¿Cuáles son sus sugerencias?


En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: [Pregunta]: Escucho sugerencias (Validar email)
« Respuesta #1 en: 1 Octubre 2019, 15:53 pm »

Ambas opciones son validas. Lo primero lo puedes hacer con CRON.

https://blog.desdelinux.net/cron-crontab-explicados/


En ambos casos, asegurate de borrar cuentas no verificadas que tengan cierta antigüedad, capaz si le das al botón de "eliminar cuentas no verificadas" justo eliminas una que se acaba de registrar y que no le ha dado tiempo a verificar el correo.


Saludos


En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: [Pregunta]: Escucho sugerencias (Validar email)
« Respuesta #2 en: 1 Octubre 2019, 16:02 pm »

Y porque creas la cuenta antes de validarla?
Simplemente no crees la cuenta hasta que pinchen en el link del correo.
Verifica también si la cuenta ya existe para que un usuario no se haga varias cuentas sin querer a base de F5.


Yo personalmente lo haría así:

-Crear un script "cuentas/registrar.php" que otorgue una cookie al usuario y cree dinámicamente dos nuevos archivos:
1) "temporal/cuenta-123456789.php" cuando se complete correctamente el registro.
Y
2) "automatizacion/borrar_link_cuenta-123456789.php".

-Dentro de "temporal/cuenta-123456789.php" estará el nombre de la cuenta y una función para crear la cuenta. En la función tomaría como parámetro la cookie para que solo el cliente que rellenó el usuario pueda activar la cuenta.(esto es opcional, también puedes darle un código de activación único).

-Al correo del usuario se envía:
Bienvenido a example.com, para finalizar el registro ingrese a https://example.com/temporal/cuenta-123456789.php
Tras visitar el enlace su cuenta será creada. Será redirigido automáticamente al portal de ingreso. Para acceder ingrese con el usuario y la contraseña que facilitó en el registro.

-Desde "temporal/cuenta-123456789.php" arrancas el script "automatizacion/borrar_link_cuenta-123456789.php" este script se ejecuta hasta pasados 10 minutos desde el envio del correo al usuario y borra el archivo "temporal/cuenta-123456789.php" pasado ese tiempo. O si se activó la cuenta también lo borras. En caso de que la cuenta se active mediante el link pero el usuario no haga login en la cuenta, yo borraría la cuenta porque es sospechoso que se active la cuenta pero el usuario no haga login.
Puedes habilitar un "Renviar Correo" donde se vuelva a crear un archivo "temporal/cuenta-1737281928.php" tras completar un captcha.

-Para el nombre de archivo "temporal/cuenta-123456789.php" generas el número 123456789 con un algoritmo de (PRNG) Pseudo Random Number Generator con entropía por hardware. Puedes usar alguna función, librería o puedes crearlo tu mismo con pocas líneas con un contador, un timer, un for y una operación matemática como podría ser una multiplicación al resultado para expandirlo y que un cambio mínimo en el resultado genere un resultado muy diverso. Te recomiendo codificar el resultado en base64 varias veces para evitar ataques de fuerza bruta devido a poco tamaño de url, de forma que te quede algo como:
 "temporal/cuenta-Vm0wd2VFMUdiRmRpUm1SWFYwZG9WbGx0ZUV0WFJteDBaRWhrVmxKc2NIcFdNakZIVjBaS2MyTkliRmRpVkZaeVZtMTRTMlJXUm5OaVJsWlhZbFpKZWxaclpEUldNVnBXVFZWV2FHVnFRVGs9.php" en vez de temporal/cuenta-123456789.php" un hash sería más seguro, pero si el PRNG es largo y seguro, no tienes problemas en usar base64.


Habrá varias librerías y frameworks que te hagan todo esto automáticamente.

De todas formas es bastante sencillo y rápido de implementar uno mismo.
« Última modificación: 1 Octubre 2019, 16:15 pm por string Manolo » En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Pregunta]: Escucho sugerencias (Validar email)
« Respuesta #3 en: 1 Octubre 2019, 16:26 pm »

string Manolo solo pensaré... jamas has trabajado con sistemas en producción! XD

Citar
Y porque creas la cuenta antes de validarla?
la pregunta ni sentido tiene XD

Citar
y cree dinámicamente dos nuevos archivos
XD wtf!?

y ahora dejando de lado las locuras y volviendo al mundo normal


por un lado las cuentas no verificadas no son un problema real, son cuentas con minimos datos (usualmente unos pocos datos que no llegan a 1kb) que a demás la base de datos por defecto terminará reduciendo en tamaño, perfectamente te puedo decir que tengo tablas con cientos de miles de registros que no superan la veintena de MB

así como te dice #!drvy tan simple que con un cron limpias la tabla esto puedes correrlo una vez por mes a las cuenta de mas de 1 mes de antig:uedad sin problemas porque no se acumularán tantos datos para ser molesto, pero estos números quedan en tus manos (te sorprenderías cuanta gente toma mas de una semana para verificar correo)

puedes dejarlo como una tabla separada tal que al verificarse sea copiado a una tabla de producción y así te evitas chequear si está verificada en el sql


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: [Pregunta]: Escucho sugerencias (Validar email)
« Respuesta #4 en: 1 Octubre 2019, 18:09 pm »

Es más complicado hacerlo así, las cuentas se tienen que registrar si o si (me encantaria que no) independientemente de si se verificaron o no.. acordate que tengo que darle un codigo de verificación al usuario... la aplicacion web cuenta con que los usuarios van a poder cambiar su correo en el futuro y cuando hagan esto va a ser activado un nuevo proceso, se genera un nuevo codigo, y setea email_verified = 0 y lo manda a la pagina .php para ingresar x codigo

El problema por ahí no es solamente el peso aunque es algo importante, sino que también x persona que no tenga nada que hacer se ponga a registrar cuentas con correos validos de otras personas y nunca más las valide y esas personas que se quieran registrar con ese correo que en principio era de ellos no van a poder hacerlo...

Muchas gracias a los 3, voy a borrar las cuentas con 15 dias de ambiguedad..
 ;-) ;-) ;-)
« Última modificación: 1 Octubre 2019, 18:15 pm por MiguelCanellas » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: [Pregunta]: Escucho sugerencias (Validar email)
« Respuesta #5 en: 1 Octubre 2019, 19:18 pm »

Yo personalmente lo haría así:

Yo le veo varios problemas, siendo el principal que rompes el propósito.  La idea de Miguel es borrar cuentas no verificadas, y vale, con tu metodo dichas cuentas no llegarian a la base de datos pero si se crearian archivos.. que viene siendo más o menos lo mismo. Por otro lado, tendrías que darle permisos de escritura a dos archivos php, uno que cree los dos archivos de los que necesitas y que uno de ellos sea capaz de borrar otros archivos. Llegados a este punto, seguro que le puedes ver los fallos de seguridad que puede llegar a provocar eso. Además estaríamos metiendo INPUT del usuario en un archivo PHP ejecutable, vamos, la receta perfecta del desastre xD. Por ultimo, es menos eficiente pues tendrias que usar tanto consultas a la base de datos como consultas al sistema de archivos para comprobar el usuario y si se ha registrado o no, etc etc.


Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
funcion para validar email
Programación Visual Basic
bomba1990 2 4,724 Último mensaje 17 Julio 2009, 00:59 am
por seba123neo
Validar email en jtextfield
Java
berna1001 2 8,887 Último mensaje 14 Mayo 2011, 03:14 am
por Valkyr
AYUDA javascript, validar blanco y email !!
Java
lpnu 4 3,111 Último mensaje 7 Julio 2012, 02:57 am
por Debci
[Pregunta]: Validar email con javascript
Desarrollo Web
Leguim 4 2,445 Último mensaje 29 Septiembre 2019, 03:37 am
por #!drvy
[Pregunta]: Escucho sugerencias (Validar email) PARTE 2
Desarrollo Web
Leguim 2 1,975 Último mensaje 2 Octubre 2019, 05:28 am
por Leguim
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines