Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    14

    codice simile verifica in due passaggi gogole

    Ciao a tutti, volevo fare una cosa simile alla verifica in due passaggi di Google, cioè creare un numero di (4) cifre da utilizzare come password, ma che abbia valenza per un minuto.
    In pratica creare una password numerica di (4) cifre basata sul timestamp.

    Non so da dove iniziare, avete suggerimenti?

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Descrivi il processo che vuoi seguire, io mi immagino qualcosa tipo
    - utente inserisce user e password
    - invii all'utente una email con il codice
    - l'utente scrive il codice nella tua pagina

    Se fosse così, al momento dell'invio delle credenziali dell'utente, generi il codice e lo salvi nel DB con una data e ora di scadenza, mandi la mail, mostri a schermo il nuovo campo, attendi che l'utente inserisca e invii il codice e verifichi che sia corretto e valido

    Se va bene lo fai entrare, altrimenti fai altro

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    14
    Io pensavo di fare una pagina (per poi fare un'app separata dal tutto) che genera sempre queste password e se ne metto una precedente non funziona

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Quindi vuoi realizzare un app che generi dei token che il tuo server deve validare?
    Non sono molto esperto di questo, ma da quello che so è tutt'altro che semplice

  5. #5
    Utente di HTML.it L'avatar di Disema
    Registrato dal
    Sep 2014
    Messaggi
    63
    Fai qualche esempio, che non mi è perfettamente chiaro cosa vuoi fare
    Vuoi fare una pagina in cui viene generata(quindi visualizzata) questa password(che dura 1 minuto), questa password poi sarà richiesta in altre pagine? Che non c'entrano nulla con quest'ultima?
    Se è quello che ho capito, io farei così:
    Nella pagina della password faccio generare questa la password che oltre ad essere visualizzata a video viene anche inserita in un database, con data e ora(ed eventualmente l'id dell'utente se deve essere assegnato a un utente solo).
    Poi farei un nuovo file in cui metto una funzione che controlla se la password inserita corrisponde a quella del db:
    Codice PHP:
    function($password)//Ed eventualmente anche l'id dell'utente passato come parametro
    {
    ...
    SELECT ECC ECC
    controllo ora ecc ecc
    ...

    e poi tramite l'include inserisco questo file nelle pagine in cui mi serve inserire questa password.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    14
    Mi spiego meglio:
    ho 2 pagine che non sono collegate, a parte che devono avere la stessa funzione, per creare e controllare la password.

    La prima pagina mi crea una password che mi aggiorna ogni minuto con un particolare algoritmo e non salva niente a DB (come l'app di google https://play.google.com/store/apps/d...authenticator2)

    La seconda pagina ha solo una textbox dove inserire questo codice. Con l'invio del form mi controlla il codice inserito con un codice che genera con lo stesso algoritmo di prima. Se l'hai inserito entro un minuto il codice sarà lo stesso, altrimenti sarà diverso e quindi darà errore.

    Non so se sono stato chiaro, ma spero di si.
    Mi serve un algoritmo che generi un codice numerico diverso ogni minuto

  7. #7
    Utente di HTML.it L'avatar di Disema
    Registrato dal
    Sep 2014
    Messaggi
    63
    Il fatto è che senza salvare la password generata dalla prima pagina come fai a controllare poi se quella inserita nel form è la stessa?
    Poi l'agoritmo applicato anche alla password inserita nella textbox non credo serva a molto in questo caso, perchè se la password viene generata e quindi mostrata a video sarà quella, se poi la fai passare dall'algoritmo diventerà un altra.

    L'unica soluzione che mi viene in mente potrebbe essere questa: (però adesso non ricordo tutte le funzioni per farlo)
    prendi il timestamp corrente(eventialmente tagli i secondi visto che ti serve ogni minuto);
    con una serie di funzioni delle stringhe lavori su questo timestamp in modo non so da invertire i numeri in un certo modo, o di sommargli qualcosa, questo sta a te decidere come farlo;
    e quindi nella prima pagina lo usi per mandarlo a video;
    mentre nella seconda fai inserire quello che si vede a video nella prima, e con lo stesso algoritmo, prendi il timestamp corrente e generi il codice, quindi se corrisponde a quello inserito è ok altrimenti dai l'errore.

    Spero di essermi espresso bene.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    14
    esatto, è proprio quello che mi serve, però non so come applicarlo. Nel senso che non so quale algoritmo utilizzare

  9. #9
    Utente di HTML.it L'avatar di Disema
    Registrato dal
    Sep 2014
    Messaggi
    63
    come ti ho detto puoi cercare se sul web trovi qualcosa, oppure puoi costruirtela tua tu una funzione che fa questo lavoro in questo modo:
    prendi il timestamp con time() e poi usi una serie di funzioni messe a disposizione da php stesso per lavorare con i numeri Funzioni matematiche e con le stringhe Funzioni su Stringhe.
    L'unica cosa in cui non ti posso aiutare è su come lavorare per far si che valga un minuto, non ho ben capito come funziona il timestamp unix, credo che siano tutti secondi, quindi magari per venirti più semplice imposti che vale 100 secondi quindi ad esempio:
    codice:
    //da questo timestamp
    1414084600
    //a questo
    1414084699
    ti verrà sempre lo stesso codice, quindi con le funzioni delle stringhe tagli le ultime due cifre

    (non vorrei sbagliarmi perchè come ti ho detto non so esattamente come funziona il timestamp)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.