verification links...λογική;

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Serghio
Δημοσιεύσεις: 455
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

verification links...λογική;

Δημοσίευση από Serghio » 06 Νοέμ 2013 12:39

Είμαι στην φάση που θέλω να φτιάξω ένα verification e-mail για την περίπτωση που ο χρήστης θελήσεις να αλλάξει το e-mail του....ωραία, και πάει το e-mail στον χρήστη, και θα υπάρχει εκει πέρα φαντάζομαι ένα verification link...και από εδώ είναι που δεν ξέρω ακριβώς τι θα κάνω.

Ποιά είναι η λογική που πρέπει να ακολουθηθεί από την στιγμή που ο χρήστης κλικάρει το verification link?

Δεν θέλω να μου δείξετε κώδικα(προς το παρόν), θέλω μόνο να επικεντρωθώ στην λογική.

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

verification links...λογική;

Δημοσίευση από Khronos » 06 Νοέμ 2013 12:47

Από τη στιγμή που ο χρήστης αλλάζει το email του και άρα δεν ξέρεις αν είναι δικό του κτλ. πρέπει να τον κάνεις "ανενεργό".

Το verification link θα πηγαίνει σε ένα action που θα ξανακάνει ενεργό το χρήστη με το συγκεκριμένο email.

Serghio
Δημοσιεύσεις: 455
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

verification links...λογική;

Δημοσίευση από Serghio » 06 Νοέμ 2013 12:56

Khronos έγραψε:Από τη στιγμή που ο χρήστης αλλάζει το email του και άρα δεν ξέρεις αν είναι δικό του κτλ. πρέπει να τον κάνεις "ανενεργό".
Όταν λες ανενεργό τι εννοείς?
Khronos έγραψε: Το verification link θα πηγαίνει σε ένα action που θα ξανακάνει ενεργό το χρήστη με το συγκεκριμένο email.
Αυτό πως υα γίνεται δηλαδή; Όταν λες action τι εννοείς;

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

verification links...λογική;

Δημοσίευση από Khronos » 06 Νοέμ 2013 13:03

Στη βάση σου, ο πίνακας users πρέπει να έχει ένα πεδίο "isActive (boolean)" που θα καθορίζει αν ο χρήστης είναι ενεργός ή όχι.

Όταν κάνει εγγραφή κάποιος χρήστης, για να είσαι σίγουρος ότι είναι δικό του το email, πρέπει να το κάνει verify. Ουσιαστικά η ίδια διαδικασία πρέπει να ακολουθείται και όταν αλλάξει το email ο χρήστης.

Το verification link είναι της μορφής: http:www.yourdomain.com/verify.php?email=test@test.gr
(το παραπάνω είναι παράδειγμα και δεν πρέπει να το χρησιμοποιήσεις έτσι, αν δε θες ο καθένας να καρφώνει ένα email στο link.)

To verify.php θα κάνει ενεργό τον χρήστη με το συγκεκριμένο email.

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

verification links...λογική;

Δημοσίευση από geomagas » 06 Νοέμ 2013 14:51

@Khronos

Σκέφτομαι:

Αν ο χρήστης δώσει λάθος e-mai; Λάθη γίνονται συχνά.
Είναι σωστό να τον κλειδώσεις απ' έξω; Δεν οδηγεί σε deadlock αυτό;

Εννοώ, δεν θα πρέπει να μπορεί να συνδεθεί στο λογαριασμό του και να ξανακάνει αίτηση για αλλαγή e-mail (δίνοντας το σωστό);

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

verification links...λογική;

Δημοσίευση από Khronos » 06 Νοέμ 2013 15:18

Έχεις δίκιο, συνήθως δεν επιτρέπω να μπορεί ο χρήστης να αλλάζει το email (το χρησιμοποιώ σαν username) και δεν το έχω σκεφτεί αναλυτικά.

Θα μπορούσε μαζί με το verification να γίνει και η αλλαγή του email οπότε δεν χρειάζεται να γίνει inactive ο χρήστης.

@Serghio
Μπορείς να κάνεις δοκιμή να δεις πώς διαχειρίζεται το freestuff.gr την αλλαγή email.

Serghio
Δημοσιεύσεις: 455
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

verification links...λογική;

Δημοσίευση από Serghio » 06 Νοέμ 2013 16:43

Khronos έγραψε:Έχεις δίκιο, συνήθως δεν επιτρέπω να μπορεί ο χρήστης να αλλάζει το email (το χρησιμοποιώ σαν username) και δεν το έχω σκεφτεί αναλυτικά.
To ίδιο κάνω και εγώ...
Khronos έγραψε: Θα μπορούσε μαζί με το verification να γίνει και η αλλαγή του email οπότε δεν χρειάζεται να γίνει inactive ο χρήστης.
Εδω θα χρειαστώ βοήθεια...ωραία κάνει ο χρήστης κλικ τον σύνδεσμο...τι ακολουθεί μετά;
2ον.Στην σελίδα όπου προχώρησε σε αλλαγή του email θα υπάρξει καμία αλλάγη...πχ...να τον ενημερώσω του έστειλα verification email;Θα χρειαστεί τίποτα άλλο...οπουδήποτε;
Khronos έγραψε: @Serghio
Μπορείς να κάνεις δοκιμή να δεις πώς διαχειρίζεται το freestuff.gr την αλλαγή email.
σίγουρα

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

verification links...λογική;

Δημοσίευση από geomagas » 06 Νοέμ 2013 17:37

Serghio έγραψε:...ωραία κάνει ο χρήστης κλικ τον σύνδεσμο...τι ακολουθεί μετά;
Πήγαινε ένα βήμα πιο πίσω.
Όταν προσπαθήσει να αλλάξει το e-mail του, καταχωρείς την αίτηση σε ένα πίνακα και του στέλνεις mail στην νέα διεύθυνση. Ένα από τα πεδία της αίτησης θα είναι και ένα τυχαίο nonce, το οποίο στέλνεις και στο link, για να μπορείς να τα διασταυρώσεις.
Ώσπου να πατήσει το link, ισχύουν τα παλιά. Συνδέεται όπως πριν σαν να μην συμβαίνει τίποτε, και επικοινωνείς μαζί του με το παλιό e-mail.
Όταν τώρα πατήσει το link, μέσω του nonce βρίσκεις (από τον πίνακα αιτήσεων) το χρήστη που αφορά, και το νέο e-mail.
Γνώμη μου είναι, σε αυτή τη φάση, να τον βάλεις να κάνει login (αν το mail έπεσε σε λάθος χέρια?).
Αλλάζεις το mail στο προφίλ του και του λες ότι πλέον ισχύει το νέο.
Serghio έγραψε:2ον.Στην σελίδα όπου προχώρησε σε αλλαγή του email θα υπάρξει καμία αλλάγη...πχ...να τον ενημερώσω του έστειλα verification email;
Εμ βέβαια! Άμα περιμένεις να το δει τυχαία στο mailbox του... :P

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

verification links...λογική;

Δημοσίευση από Apostolis_38 » 06 Νοέμ 2013 17:47

geomagas έγραψε:@Khronos

Σκέφτομαι:

Αν ο χρήστης δώσει λάθος e-mai; Λάθη γίνονται συχνά.
Είναι σωστό να τον κλειδώσεις απ' έξω; Δεν οδηγεί σε deadlock αυτό;

Εννοώ, δεν θα πρέπει να μπορεί να συνδεθεί στο λογαριασμό του και να ξανακάνει αίτηση για αλλαγή e-mail (δίνοντας το σωστό);
Γι αυτό υπάρχει και το verification όπου πρέπει να καταχωρήσει το email εκ νέου κι εσύ να συγκρίνεις τα δύο email που καταχώρησε και να πράξεις αναλόγως.

Αν παρ' όλα αυτά γίνει λάθος, τότε απλά στέλνει ένα mail στο helpdesk - support -οτιδήποτε και ζητάει να του ξεκλειδώσουν τον λογαριασμό.
Φυσικά, αποδεικνύοντας οτι όντως είναι αυτός, παραθέτωντας και άλλα στοιχεία.


Μια καλή ιδέα θα ήταν να του ζητηθεί και ένα πιστοποιητικό οτι δεν είναι μπαγλαμάς (αφού καταχώρησε δύο φορές λάθος το mail του και δεν πήρε πρέφα τίποτα) και να του σταλθεί ένα κουπόνι 3μηνης συνδρομής στο "Ψάρεμα και Δολώματα" :D

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

verification links...λογική;

Δημοσίευση από geomagas » 06 Νοέμ 2013 18:29

Apostolis_38 έγραψε:
geomagas έγραψε:@Khronos

Σκέφτομαι:

Αν ο χρήστης δώσει λάθος e-mai; Λάθη γίνονται συχνά.
Είναι σωστό να τον κλειδώσεις απ' έξω; Δεν οδηγεί σε deadlock αυτό;

Εννοώ, δεν θα πρέπει να μπορεί να συνδεθεί στο λογαριασμό του και να ξανακάνει αίτηση για αλλαγή e-mail (δίνοντας το σωστό);
Γι αυτό υπάρχει και το verification όπου πρέπει να καταχωρήσει το email εκ νέου κι εσύ να συγκρίνεις τα δύο email που καταχώρησε και να πράξεις αναλόγως.
Αυτό δεν το κατάλαβα. Τι μπορείς να συγκρίνεις μεταξύ παλιού και νέου e-mail; Θα είναι απλά... διαφορετικά.
Apostolis_38 έγραψε:Αν παρ' όλα αυτά γίνει λάθος, τότε απλά στέλνει ένα mail στο helpdesk - support -οτιδήποτε και ζητάει να του ξεκλειδώσουν τον λογαριασμό.
Φυσικά, αποδεικνύοντας οτι όντως είναι αυτός, παραθέτωντας και άλλα στοιχεία.
Μα αυτό ακριβώς προσπαθείς να αποφύγεις με το verification: Την υποστήριξη με ανθρώπινη παρέμβαση.
Τυποποιείς τη διαδικασία για να εξαλείψεις τον ανθρώπινο παράγοντα όσο γίνεται.
Apostolis_38 έγραψε:Μια καλή ιδέα θα ήταν να του ζητηθεί και ένα πιστοποιητικό οτι δεν είναι μπαγλαμάς (αφού καταχώρησε δύο φορές λάθος το mail του και δεν πήρε πρέφα τίποτα) και να του σταλθεί ένα κουπόνι 3μηνης συνδρομής στο "Ψάρεμα και Δολώματα" :D
Χεχε! Οκ, αλλά πέρα από τα αστεία: Αν πχ το FB έλεγε "δεν δεχόμεθα μπαγλαμάδες", θα ήταν... περίπτερο.
Πόσα sites ξέρεις που δέχονται μόνο non-μπαγλαμάδες; Εκτός του ότι ακούγεται λίγο ελιτίστικο, μειώνεις σημαντικά την πελατειακή σου βάση (κοίτα γύρω σου...)

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

verification links...λογική;

Δημοσίευση από Apostolis_38 » 06 Νοέμ 2013 18:46

Αυτό δεν το κατάλαβα. Τι μπορείς να συγκρίνεις μεταξύ παλιού και νέου e-mail; Θα είναι απλά... διαφορετικά.


- Δεν καταχωρεί το παληό και το νέο email, αλλά δύο φορές το νέο.
Καταχωρεί μία φορά το νέο email.
Ξανά από κάτω άλλη μια φορά.
Τσεκάρεις αν τα δύο email συμπίπτουν.

- Δυστυχώς η πλήρως αυτοματοποιημένη διαδικασία παραμένει άπιαστο όνειρο.
Κι εδώ ισχύει η ρήση του Αϊνστάϊν για το σύμπαν και την ανθρώπινη βλακεία.

- Ουκ εν τω mall το ευ.
Εντάξει, πλάκα κάνουμε. :D

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

verification links...λογική;

Δημοσίευση από geomagas » 06 Νοέμ 2013 18:54

Apostolis_38 έγραψε: - Δεν καταχωρεί το παληό και το νέο email, αλλά δύο φορές το νέο.
Καταχωρεί μία φορά το νέο email.
Ξανά από κάτω άλλη μια φορά.
Τσεκάρεις αν τα δύο email συμπίπτουν.
Α, αυτό εννοείς...
Παρόλα αυτά, πάλι μπορούν να γίνουν λάθη. Και αυτό δεν είναι δικαιολογία για να τον κλειδώσεις απ'έξω.
Με άλλα λόγια, γιατί να εφαρμόσεις στο σύστημά σου έναν κανόνα εντελώς άχρηστο;
Apostolis_38 έγραψε: - Δυστυχώς η πλήρως αυτοματοποιημένη διαδικασία παραμένει άπιαστο όνειρο.
Κι εδώ ισχύει η ρήση του Αϊνστάϊν για το σύμπαν και την ανθρώπινη βλακεία.
Δεν είναι και άπιαστο όνειρο. Βλ. google/gmail. Και όλα τα μεγάλα έως μεσαία sites στο web.

Με τον Αλβέρτο συμφωνούμε. Παιδιώθεν! :wink:

Serghio
Δημοσιεύσεις: 455
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

verification links...λογική;

Δημοσίευση από Serghio » 06 Νοέμ 2013 20:07

αναφέρθησαν πολλά και διάφορα...δεν πρόκειται να τα θίξω όλα τώρα, πρώτα θα ξεκινήσω να γράφω κώδικα και στην πορεία θα έρθουν τα όποια ερωτήματα. Για τώρα όμως θα ήθελα να αναφερθώ στα σχετικά με την βάση θέματα.
ο geomagas λέει "καταχωρέις την αίτηση σε πίνακα", ωραία. Εκτός από το nonce φαντάζομαι αυτός ο πίνακας θα περιέχει και το καινούργιο email.Σωστα;

Οπότε έχουμε ένα table με 2 cols.
Eρώτηση.
Πώς θα καταλάβω οτι το link το οποίο κάνει κλικ ο χρήστης προέρχεται όντως από το καινούργιο email account ωστε να μπορεί να γίνει η σύγκριση με αυτό στην βάση;

Φαντάζομαι(όπως ελέχθη και παραπάνω) ότι το nonce θα στέλνεται σε κάποια σελίδα π.χ verify.php όπου θα υπάρχει ο σχετικός κώδικας.

Ας υποθέσουμε ότι το verification γινεται.
Να υποθέσω ότι κάνω delete το σχετικό row στον πινακα που αναφέρεται παραπάνω και αλλάζω το email στον πίνακα που κρατώ και τα άλλα στοιχεία των χρηστών(users table)...σε αυτον τον πίνακα κρατώ το δηλωθέν email του χρήστη.

Έθεσα πολλά...σταματώ εδώ.

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

verification links...λογική;

Δημοσίευση από geomagas » 06 Νοέμ 2013 20:38

Serghio έγραψε:αναφέρθησαν πολλά και διάφορα...δεν πρόκειται να τα θίξω όλα τώρα, πρώτα θα ξεκινήσω να γράφω κώδικα και στην πορεία θα έρθουν τα όποια ερωτήματα. Για τώρα όμως θα ήθελα να αναφερθώ στα σχετικά με την βάση θέματα.
ο geomagas λέει "καταχωρέις την αίτηση σε πίνακα", ωραία. Εκτός από το nonce φαντάζομαι αυτός ο πίνακας θα περιέχει και το καινούργιο email.Σωστα;
Σωστά.
Serghio έγραψε:Οπότε έχουμε ένα table με 2 cols.
... και ο χρήστης, 3. Τα βασικά. Περαιτέρω, μπορείς να κρατάς διάφορες καταγραφές: Ημερομηνία/ώρα, IP κ.ο.κ.
Serghio έγραψε:Eρώτηση.
Πώς θα καταλάβω οτι το link το οποίο κάνει κλικ ο χρήστης προέρχεται όντως από το καινούργιο email account ωστε να μπορεί να γίνει η σύγκριση με αυτό στην βάση;
Serghio έγραψε:Φαντάζομαι(όπως ελέχθη και παραπάνω) ότι το nonce θα στέλνεται σε κάποια σελίδα π.χ verify.php όπου θα υπάρχει ο σχετικός κώδικας.
Το link θα είναι της μορφής http://www.domain.tld/verify.php?nonce= ... DD32NF9487
Στο verify.php προφανώς θα το πάρεις με $_GET['nonce'], θα ελέγξεις αν είναι έγκυρο, και αν ναι, θα αλλάξεις το e-mail του χρήστη που θα αντιστοιχεί στην εγγραφή.
Νομίζω ότι αυτό καλύπτει και τις δύο απορίες σου, εφ'όσον ο μόνος που θα "ξέρει" το nonce θα είναι αυτός που έλαβε το mail.
Aλλά για περισσότερη ασφάλεια, όπως είπα πριν, βάλτον να κάνει login. Που ξέρεις, μπορεί να έδωσε το mail της γκόμενας... αλλά η γκόμενα δεν θα ξέρει το password του, σωστά;;; 8)
Serghio έγραψε:Ας υποθέσουμε ότι το verification γινεται.
Να υποθέσω ότι κάνω delete το σχετικό row στον πινακα που αναφέρεται παραπάνω και αλλάζω το email στον πίνακα που κρατώ και τα άλλα στοιχεία των χρηστών(users table)...σε αυτον τον πίνακα κρατώ το δηλωθέν email του χρήστη.

Το σίγουρο είναι ότι το nonce θα πρέπει να χρησιμοποιηθεί μία φορά. Αυτή είναι όλη η φιλοσοφία.
Τώρα, είτε το σβήνεις είτε το κρατάς με status=consumed ή κάτι άλλο, είναι δικό σου θέμα (και έχει να κάνει με τον έλεγχο εγκυρότητας που είπαμε πιο πάνω).
Serghio έγραψε:Έθεσα πολλά...σταματώ εδώ.

Serghio
Δημοσιεύσεις: 455
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

verification links...λογική;

Δημοσίευση από Serghio » 07 Νοέμ 2013 12:44

geomagas έγραψε: Το σίγουρο είναι ότι το nonce θα πρέπει να χρησιμοποιηθεί μία φορά. Αυτή είναι όλη η φιλοσοφία.
Τώρα, είτε το σβήνεις είτε το κρατάς με status=consumed ή κάτι άλλο, είναι δικό σου θέμα (και έχει να κάνει με τον έλεγχο εγκυρότητας που είπαμε πιο πάνω).
Όσον αφορά το nonce...με μια απλή crypt function θα ήμου εντάξει λες;
Αν ναι, τι θα μπορουσα να χρησιμοποιήσω σαν input string.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες