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

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 ... 65
371  Programación / Desarrollo Web / Re: [Pregunta]: Problema con expresión regular en: 3 Octubre 2019, 03:04 am
Ya, por eso te he dicho que deberias validar y no sanitizar en este caso. Si, puedes hacer una regex que busque solo esa coincidencia y quite el resto:

Código
  1. form_verify_email.verify_code.value = String(form_verify_email.verify_code.value).replace(/.*([0-9]{20}[A-Z]{2}).*/g, '$1');

Y esto solo te cogeria lo que buscas.. pero es que lo cogerá de cualquier lado, aunque el string sea este:

Código:
sad123456789012345das67890AA1234567890123dasdasd45678
90AA12345678901234567890AA12345678901234567890AA123456789
01234567890AA12345678901234567890AA12345678901234567890AA
12345678901234567890AA12345678901234567890AA123456789sadsa
dsa01d45678901234567890dasdAA12345678901234567890AA1234567
890124567890AA12345678901234567890AA12345678901234567890AA
12345678901234567asdas890AA12345678901234567890AA1234567890
1234567890AA12345678901234567890AA12345678901234567890AA123
45678901234567890AA12345678901234567890AAASDASDASDSADSA123
45678901234567890AA12345678901234567890AA

y así te estás exponiendo a que generen un string gigante que casualmente podría contener un código válido y alá, a correr.


Intenta validar antes de sanitizar. Comprueba si el string que te están pasando cumple con el formato que pides, si no lo hace, mandales a fregar, pero no intentes hacerle el favor a un posible atacante.


Saludos

Si igual es más que nada para mejorar un poquito la "experiencia del usuario" ya que esto lo valido con otras técnicas en PHP no necesariamente con expresiones regulares, con poner maxlength = 22 en dicho input no hay problema (ya se que esto lo pueden editar en inspeccionar elemento) a lo que voy es que no me interesa tanto como quede esto en temas de seguridad...

No se si soy muy duro o no entiendo o que, pero tampoco el código este me sirvió.
Según lo que pude entender es que este código debería funcionar pero como dijiste arriba si me ponen cadenas muy largas habrá problemas (pero igual no hay problema para mi que esto pase)
Código
  1. form_verify_email.verify_code.value = String(form_verify_email.verify_code.value).replace(/.*([0-9]{20}[A-Z]{2}).*/g, '$1');
372  Programación / Desarrollo Web / Re: [Pregunta]: Problema con expresión regular en: 3 Octubre 2019, 02:20 am
El otro post ya te pase una página donde podías hacer pruebas de regex y aprender a hacerlo pues dicha página te explica el regex que tienes. Vamos a explicar el tuyo.

Primero tienes esto:
Código
  1. [^0-9]{20}

Esto es un set negativo donde buscas cualquier cosa que NO sea un número de 0-9 y que tenga una longitud de 20 caracteres.

Luego tienes esto:
Código
  1. [^A-Z]{21,22}

Otro set negativo donde buscas cualquier cosa que NO sea A-Z y que tenga una longitud de entre 21 y 22 caracteres.


Entonces, lo que le estamos diciendo es, reemplazame, aquellos strings donde haya especificamente 20 caracteres que NO sean un número seguido de 21 o 22 caracteres que no sean mayúsculas... Supongo que ya puedes ver el fallo.


Aquí no tienes que buscar reemplazar (sanitizar), tienes que validar. Es decir, no buscas un replace, buscas que el valor sea especificamente el formato que le estas indicando (test). Por tanto, verifica que de principio (^) a fin ($), el texto contiene exactamente 20 caracteres numéricos y 2 letras mayúsculas. O lo que es lo mismo:


Código
  1. const tests = [
  2.  '1234567890AB',
  3.  '1234567890AB1234567890',
  4.  '12345678901234567890AABB',
  5.  '123456789012345678901A',
  6.  '1234567890123456789AB2',
  7.  '$$$$$$$$$$$$$$$$$$$$00',
  8.  'dsakdsakldjaksljdklasa',
  9.  'askjdasdjklasjdkasjd12',
  10.  '12345678901234567890AB',
  11. ];
  12.  
  13. const regexCode = /[0-9]{20}[A-Z]{2}$/g;
  14.  
  15. tests.forEach(function(value) {
  16.  
  17.  if (!regexCode.test(value)) {
  18.    console.log(value + ' no es un codigo valido');
  19.  }
  20.  
  21. });

El único que no te saltara como no valido es el ultimo (12345678901234567890AB) puesto que cumple con las condiciones.

Saludos

La expresión regular funciona perfecto! pero no en el contexto que la quiero aplicar, ya que estoy intentando que sea lo opuesto digamos...

Código
  1. form_verify_email.verify_code.value = String(form_verify_email.verify_code.value).replace(/[0-9]{20}[A-Z]{2}/g, '');
  2.  

ya que si encuentra problemas va a borrar eso del input con .replace

intente estos:
Código
  1. form_verify_email.verify_code.value = String(form_verify_email.verify_code.value).replace(/^[0-9]{20}[A-Z]{2}/g, '');
  2.  

Código
  1. form_verify_email.verify_code.value = String(form_verify_email.verify_code.value).replace(/[^0-9]{20}[^A-Z]{2}/g, '');
  2.  

Pero ninguno me está funcionando, (está útil esa pagina que me habías pasado)

EDIT: no soy experto pero creo que a el segundo intento le falta un OR o || pero en expresión regular creo yo jeje, voy a revisar...
EDIT X2: mmm no no tuve suerte
373  Programación / Desarrollo Web / [Pregunta]: Problema con expresión regular en: 3 Octubre 2019, 01:20 am
Buenas noches,
antes de perder la cabeza quería comentarles el problema que estoy teniendo para validar lo siguiente:

La cadena sería (20 números) + (2 letras mayúsculas)

estuve intentando con lo siguiente y otros métodos pero no me sirven:

Código
  1. form_verify_email.verify_code.value = String(form_verify_email.verify_code.value).replace(/[^0-9]{20}[^A-Z]{21,22}/g, '');
  2.  
374  Programación / Desarrollo Web / [Pregunta]: Sugerencias (Optimizar) en: 2 Octubre 2019, 09:12 am
Buenas noches,
cada vez que se carga una pagina lo que hago es verificar que dicho usuario tenga el email verificado en el caso de que no lo tenga lo enviará a x pagina...
Lo hago de la siguiente manera

Código
  1. if(users::Check_Email_Verified($_SESSION['id_user']) == false)
  2. {
  3. ?>
  4.     <script type="text/javascript">
  5.        window.location.href = 'verify_email';
  6.        </script>
  7.        <?php
  8. }
  9.  

retorna false si dicho usuario no tiene el correo verificado
retorna true si dicho usuario tiene el correo verificado

Código
  1.        function Check_Email_Verified($id_user)
  2. {
  3. $con = Connection('root', '');
  4. $query = $con->prepare('SELECT (email_verified) FROM usuarios WHERE id_user = :id_user');
  5. $query->execute(array(':id_user' => $id_user));
  6. $results = $query->fetchAll();
  7.  
  8. $result = false;
  9.  
  10. if(!empty($results))
  11. {
  12. if($results[0]['email_verified'] == 1)
  13. {
  14. $result = true;
  15. }
  16. }
  17.  
  18. return $result;
  19. }
  20.  

La alternativa que tenia en mente sería usar una $_SESSION

Código
  1. if($_SESSION['email_verified'] == false)
  2. {
  3.     [Redirige a x pagina]
  4. }
  5.  

No sabría cual debería usar si como lo hago hasta ahora realizando consultas o con una $_SESSION.

¿Cual podría ser la forma más segura y optima de hacer esto?

Muchas gracias
375  Programación / Desarrollo Web / Re: [Pregunta]: Escucho sugerencias (Validar email) PARTE 2 en: 2 Octubre 2019, 05:28 am
Implementa un función que compruebe si el correo fue enviado (tiene el codigo de verificacion asociado en la bd) y si no lo tiene que envíe un correo. La misma función la puedes usar tanto para enviar el correo la primera vez como para enviarlo más veces más tarde.


Saludos

Hola,
No creo haber entendido como verificar si se mando el correo...
376  Programación / Desarrollo Web / [Pregunta]: Escucho sugerencias (Validar email) PARTE 2 en: 2 Octubre 2019, 00:50 am
Buenas noches,
Resumiendo: tengo un sistema de registro donde al completar dicho formulario se lo envía a el usuario a una pagina llamada verify_email.php donde se le dirá que se envió un código de verificación a el correo electrónico anteriormente suministrado en el formulario de registro.

habrá un formulario donde podrá ingresar dicho código...
el tema o la duda es al momento de cargar la pagina verify_email ¿debería enviar el mail()?
o ¿debería hacerlo al momento de que el registro se completo? (un momento antes de redirigirlo a verify_email.php) algo así:

mail(tatata);
[enviar a verify_url];

Podría ser todo un dilema, ya que si envió el mail al momento de cargar la pagina verify_email.php cada vez que el usuario actualice la pagina se enviará el mail en cambió si hago que envie el mail un momento antes de redirigirlo a verify_email no esta este problema pero si quiero que haya un botón que diga "Volver a enviar mail" tenia pensado que la función de dicho botón sea recargar la pagina...

La solución para este dilema es enviar el mail un momento antes de redirigir a verify_email.php y el boton "volver a enviar mail" hacer algo con AJAX, escucho sugerencias! :D
377  Programación / Desarrollo Web / Re: [Pregunta]: Escucho sugerencias (Validar email) 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..
 ;-) ;-) ;-)
378  Programación / Desarrollo Web / [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?
379  Programación / PHP / Re: (Pregunta): ¿Como enviar un email con PHP? en: 30 Septiembre 2019, 03:28 am
es sarcasmo o realmente estabas en un bloqueo? XD

Fijate abajo de la fotito puse el gracias por eso para que no parezca sarcasmo XD
380  Programación / PHP / Re: (Pregunta): ¿Como enviar un email con PHP? en: 30 Septiembre 2019, 03:24 am


gracias

Mod: imagen redimansionda
Páginas: 1 ... 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 ... 65
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines