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

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

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

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

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

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

Μια χαρά μου φαίνεται. :D

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

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

Δημοσίευση από dva_dev » 20 Νοέμ 2013 22:57

Να σου βάλω λίγο λίγο τροφή για σκέψη ακόμα, πριν αρχίσεις να γράφεις κώδικα...

Πες ότι ο χρήστης έχει το email aaa@xxx.xxx
Θέλει να το αλλάξει κάποια στιγμή και δίνει email bbb@xxx.xxx
Του έρχεται ένα link με nonce "bbb".
Δεν τσεκάρει το email του αλλά ξαναζητάει κάποια στιγμή αλλαγή email και δίνει ccc@xxx.xxx
Του έρχεται ένα link με nonce "ccc".
Δεν τσεκάρει το email του αλλά ξαναζητάει κάποια στιγμή αλλαγή email και δίνει ddd@xxx.xxx
Του έρχεται ένα link με nonce "ddd".
Μπαίνει στο email του και πατάει το link με "ddd", και αλλάζει το email σε ddd@xxx.xxx
Μπαίνει μετά από λίγο στο άλλο email και πατάει στο link με "bbb".
Μπαίνει μετά από λίγο στο άλλο και πατάει στο link με "ccc".

Τι θέλεις να κάνεις σε ένα τέτοιο σενάριο;

Όπως λέει και η διαφήμιση "Ταξί κάλεσες; Κάλεσα! Αλλά πόσες φορές κάλεσα;"

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

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

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

dva_dev έγραψε:Να σου βάλω λίγο λίγο τροφή για σκέψη ακόμα, πριν αρχίσεις να γράφεις κώδικα...

Πες ότι ο χρήστης έχει το email aaa@xxx.xxx
Θέλει να το αλλάξει κάποια στιγμή και δίνει email bbb@xxx.xxx
Του έρχεται ένα link με nonce "bbb".
Δεν τσεκάρει το email του αλλά ξαναζητάει κάποια στιγμή αλλαγή email και δίνει ccc@xxx.xxx
Του έρχεται ένα link με nonce "ccc".
Δεν τσεκάρει το email του αλλά ξαναζητάει κάποια στιγμή αλλαγή email και δίνει ddd@xxx.xxx
Του έρχεται ένα link με nonce "ddd".
Μπαίνει στο email του και πατάει το link με "ddd", και αλλάζει το email σε ddd@xxx.xxx
Μπαίνει μετά από λίγο στο άλλο email και πατάει στο link με "bbb".
Μπαίνει μετά από λίγο στο άλλο και πατάει στο link με "ccc".

Τι θέλεις να κάνεις σε ένα τέτοιο σενάριο;

Όπως λέει και η διαφήμιση "Ταξί κάλεσες; Κάλεσα! Αλλά πόσες φορές κάλεσα;"
Δεν ξέρω τι θα έκανα.
Αν ξεκινήσει να σκέφτεται κάποιος πιθανά σενάρια που μπορούν να συμβούν θα "τρελαθει".
Εϊναι αδύνατον να τα προβλέψεις όλα.

Εϊμαι της αποψής ότι γράφεις κώδικα έχοντας ως βάση τα πιο πιθανά και στην πορεία ανάλογα με το τι μπορεί να προκύψει προσαρμόζεσαι.

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

Αλλά είμαι όλος αυτιά για το τι έχεις να προτείνεις. Το θέμα που θέτεις είναι πολύ ευρύτερο να ξέρεις.Η επιστήμη υπολογιστών καταπιάνεται πολύ με τέτοιου είδους "προβλήματα".

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

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

Δημοσίευση από korgr » 21 Νοέμ 2013 08:09

Αυτό το case είναι πολύ απλό!
Κάθε φορά που ο χρήστης ζητά αλλαγή email, φροντίζεις να διαγράφονται όλα τα active nonces αυτού του χρήστη που υπάρχουν ήδη αποθηκευμένα και μετά αποθηκεύεις το νέο.
Με τον τρόπο αυτό πάντα θα μένει ένα ενεργό nonce (το τελευταίο) και αν κάποιος πατήσει ένα παλαιότερο link, να βγάζει μήνυμα πως η αίτηση αυτή δεν υπάρχει ή έχει παραγραφεί.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

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

Δημοσίευση από dva_dev » 21 Νοέμ 2013 12:26

Το πιο απλό είναι να μην ακυρώνεις τίποτα. Αν έχεις δώσει λάθος το email σου ούτως ή άλλως δεν θα λάβεις ποτέ το link οπότε από μόνο του θα λήξει. Αν είναι σωστά, το τελευταίο link που θα πατήσεις θα είναι και το "έγκυρο".

Το άλλο πιο "extreme" είναι να ενημερώνεις το χρήστη ότι υπάρχει προηγούμενη αίτηση και να μην τον αφήνεις να προχωρήσει αν δεν δεχτεί να ακυρώσει πρώτα (ή να αφήσει να λήξει) το προηγούμενο.

Φίλε korgr, αυτό που προτείνεις είναι αυτό που θα ακολουθούσα κι εγώ αλλά αυτό που προσπαθώ να πω είναι ότι το τι θα κάνεις εσύ το αποφασίζεις.
Δεν είναι θέμα αν είναι "σωστό" ή "λάθος" είναι καθαρά θέμα σχεδιαστικής απόφασης. Τι θέλεις να κάνεις. Ακόμα και στα "απλά cases" υπάρχουν πολλές αποφάσεις που μπορείς να πάρεις.

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

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

Δημοσίευση από geomagas » 21 Νοέμ 2013 16:36

Ακριβώς.

Ο εύλογος κανόνας είναι ότι μετράει το τελευταίο verification, όποιο κι αν είναι αυτό.
Δεν υπάρχει conflict πουθενά, και κανείς προφανής λόγος να κάνεις κάτι παραπάνω.
Επίσης, νομίζω αυτή είναι η λογική που υπάρχει ήδη στο υποσυνείδητο του χρήστη, οπότε φαντάζει και σαν φυσική εξέλιξη.

Αν υπάρχει κάποιος λόγος (που δεν μπορώ να φανταστώ) για να τηρείται μόνο μία αίτηση ανά χρήστη σε κάθε δεδομένη χρονική στιγμή, τότε ο έλεγχος γίνεται κατά την προσπάθεια καταχώρησης νέας αίτησης.

Απάντηση

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

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

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