Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Ποια μέθοδο να χρησιμοποιήσω;

Îåêßíçóå áðü ôï ìÝëïò Ευθύμης Δημόπουλος. Τελευταία δημοσίευση από το μέλος Ευθύμης Δημόπουλος στις 01-12-2006, 09:16. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  15-11-2006, 11:04 20377

    Ποια μέθοδο να χρησιμοποιήσω;

    Καλημέρα σε όλους,

    έχω ένα προβληματισμό σχετικά με το ποια μέθοδο θα πρέπει να χρησιμοποιήσω ώστε να μην μπορεί μια σελίδα να είναι διαθέσιμη σε κάποιον άλλο χρήστη παρα μόνο σε αυτόν που έχει κάνει login.

    Ας ξεκινήσω να περιγράφω τι ακριβώς θέλω...

    Κατ'αρχήν δουλεύω με απλή asp
    Αυτό που θέλω να κάνω είναι περίπου ότι συμβαίνει στο hotmail, δηλαδή να κάνει κάποιος login κι έπειτα
    τα επόμενα links να είναι διαθέσιμα μόνο από αυτόν και να μη μπορεί να στείλει το url σε κάποιον τρίτο και να το χρησιμοποιήσει!

    Μέχρι τώρα έχω σκεφτεί το session.sessionID όπου τσεκάρω το sessionId που έχει ο χρήστης καθώς κάνει login και το μεταφέρω στις επόμενες σελίδες κάνοντας ένα request και μια ταυτοποίηση!

    Επίσης θα μπορούσε να γίνει και με το IPAddress

    • Ποιος είναι ο ενδεδειγμένος τρόπος;
    • υπάρχει κάποιος άλλος εκτός αυτών των δύο;
    • καποιος με μεγαλύτερη ασφάλεια;
    • Θα έχω πρόβλημα με το sessionID;
    Σας ευχαριστώ γα το χρόνο σας


    Ευθύμης
  •  15-11-2006, 11:12 20378 σε απάντηση της 20377

    Απ: Ποια μέθοδο να χρησιμοποιήσω;

    Αν θυμάμαι καλά μπορεί να γίνει cookie. Δημιουργείς ένα στο οποίο αποθηκεύεις πχ το username και μετά ελέγχεις αν υπάρχει.

    Εναλλακτικά μπορεί να γίνει με URL rewriting ή κάπως έτσι δεν θυμάμαι πως το λένε...

    Να σου προτείνω πέρασμα σε ASP.NET και κατά προτίμηση 2.0?

    Έχει έτοιμα πράγματα για αυτό που θες και για πολλά περισσότερα...

    Δεν χρειάζεται κάθε φορά να ανακαλύπτεις τον τροχό.

    Φυσικά η μετάβαση δεν είναι πάντα επιλογή οπότε απλά αγνόησε το σχόλιό μου και σου ζητώ συγγνώμη για τη σφήνα...
    Simple Photography
  •  15-11-2006, 21:05 20414 σε απάντηση της 20377

    Απ: Ποια μέθοδο να χρησιμοποιήσω;

     Efthimis wrote:

    • Ποιος είναι ο ενδεδειγμένος τρόπος;
    • υπάρχει κάποιος άλλος εκτός αυτών των δύο;
    • καποιος με μεγαλύτερη ασφάλεια;
    • Θα έχω πρόβλημα με το sessionID;

    Αυτό που θα μπορούσα να πω, είναι να προσπαθήσεις να μην έχεις session objects μέσα στην εφαρμογή σου. Αν το site αρχίσει να έχει μεγάλο όγκο επισκεπτών, θα αρχίσεις να έχεις σημεία κοπώσεως στον server.

    Θα μπορούσες αντίστοιχα να φτιάξεις, ένα δικό σου SessionID, και να το αποθηκεύεις μέσα σε μία βάση, είτε μόνο σε ένα stateless cookie που θα σβήνεται με την αποσύνδεση του χρήστη.

    Όσο έχει να κάνει με την ασφάλεια, θα μπορούσες να κρυπτογραφήσεις τα περιεχόμενα που θα γράφεις στο cookie. Δεν χρειάζεται να είναι ο super ασφαλείς αλγόριθμος, απλά ένας επιβεβαιωμένος αλγόριθμος σαν αυτούς που υποστηρίζει το CryptAPI.

    Για να μπορέσεις να κρατήσεις το session private - μόνο ο ίδιος ο χρήστης να μπορεί να το δει - θα πρέπει σε κάθε σελίδα της εφαρμογής σου να ελέγχεις την εγκυρότητα του SessionID που έχεις αποθηκεύσει στο stateless cookie στον client.

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  16-11-2006, 14:22 20464 σε απάντηση της 20414

    Απ: Ποια μέθοδο να χρησιμοποιήσω;

    Σας ευχαριστώ για την ανταπόκριση, (και για τη βοήθεια φυσικα)

    θα το ψάξω λίγο, νομίζω θα σκεφτώ την λύση cookie

    μέχρι τώρα κάνω request to sessionId εφόσον επαληθευτεί το user & pass του χρήστη,
    και το περνάω στις σελίδες που ακολουθούν ταυτοποιώντας το ξανά σε κάθε σελίδα με το αρχικό (με request)
    σε αυτό θα έχω πρόβλημα στην "κόπωση" του server? με το να το αποθηκεύσω σε cookie είναι καλύτερα;


    χμμμ... το CryptAPI μου φαίνεται σαν..κινέζικο...δεν έχω ιδέα, θα ψαξω λίγο στο net να βρω πληροφορίες
    παρεπιπτώντος μήπως υπάρχει κανένα κατατοπιστικό link?
  •  16-11-2006, 16:04 20476 σε απάντηση της 20464

    Απ: Ποια μέθοδο να χρησιμοποιήσω;

    Αν ο σκοπός σου είναι να ξεπεράσεις το πρόβλημα της ταυτοποίησης του χρήστη γρήγορα και εύκολα σε ένα site που θα έχει μικρό / αμελητέο αριθμό επισκεπτών και δεν υπάρχει περίπτωση αυτός ο αριθμός να μεγαλώσει απότομα (εγώ στις ιδιωτικές μου συζητήσεις τα λέω "sites του χιλιάρικου" γιατί δεν χρεώνονται συνήθως παραπάνω :) ), τότε το sessionID είναι μια αποδεκτή λύση.

    Αν όμως θέλεις να διασφαλίσεις την πιθανή μελλοντική επέκταση του site σου, τότε σκέψου αυτό που λέει ο Γιώργος.

    Γενικά, το να κρατάς session variables σημαίνει οτι κρατάς πληροφορίες στη μνήμη του server. Η "κοπωση" αναφέρεται στο οτι, όταν θα έχεις π.χ. 5 session μεταβλητές ανά χρήστη με μέγεθος κατά μέσο όρο 100 bytes η κάθε μια = 0,5Kb / χρήστη, τότε στους 1000 (σχεδόν ταυτοχρονους - μην ξεχνάμε οτι το session έχει ένα timeout - default 20 λεπτά στον iis - οπότε οι χρήστες που θα μπουν / βγουν σε ένα χρονικό παράθυρο 20 λεπτών μετρώνται ως "ταυτόχρονοι") - θα έχεις δεσμεύσει μνήμη στο server περίπου 500 ΚΒ! Το νούμερο είναι μικρό αλλά για φαντάσου να έχεις session variables των 100Kb! Απαξ και γλυκαθείς όλα είναι πιθανά :)


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  29-11-2006, 13:42 21385 σε απάντηση της 20476

    Απ: Ποια μέθοδο να χρησιμοποιήσω;

    χμμμ

    τελικά μάλλον θα χρησιμοποιήσω τη λύση cookie

    αν έχω καταλάβει καλά θα συμβαίνει το εξής:

    μπαίνοντας ο χρήστης θα δημιουργείται ένα id το οποίο θα το αποθηκεύω

    σε μία βαση και ταυτόχρονα σε ένα cookie στον υπολογιστή του...

    και στη συνέχεια,

    σε κάθε σελίδα θα πρέπει να επαληθεύω αν αυτό το id που υπάρχει

    στο cookie υπάρχει και στη βάση...

    Σωστός?

    να ρωτήσω και κάτι άλλο...

    αν αυτό το id το περνάω μέσω url και στη συνέχεια το συγκρίνω με αυτό στο cookie?

    (γλιτώνοντας το ματσάρισμα με τη βάση)

    θα είναι πιο γρήγορο όσον αφορά το performance?

    ποιο σωστό, ποιο θα είναι?

    Συγνώμη για το πρήξιμο!

    (έχω ξεκινήσει ήδη τις ενέργειες για να περάσω σε asp.net, θέλει όμως χρόνο!)

    Ευχαριστώ για το χρόνο σας...
  •  29-11-2006, 20:43 21403 σε απάντηση της 21385

    Απ: Ποια μέθοδο να χρησιμοποιήσω;

     Efthimis wrote:
    χμμμ

    τελικά μάλλον θα χρησιμοποιήσω τη λύση cookie

    αν έχω καταλάβει καλά θα συμβαίνει το εξής:

    μπαίνοντας ο χρήστης θα δημιουργείται ένα id το οποίο θα το αποθηκεύω

    σε μία βαση και ταυτόχρονα σε ένα cookie στον υπολογιστή του...

    και στη συνέχεια,

    σε κάθε σελίδα θα πρέπει να επαληθεύω αν αυτό το id που υπάρχει

    στο cookie υπάρχει και στη βάση...

    Σωστός?

    Μια χαρά τα λες! Big Smile

     Efthimis wrote:
    να ρωτήσω και κάτι άλλο...

    αν αυτό το id το περνάω μέσω url και στη συνέχεια το συγκρίνω με αυτό στο cookie?

    (γλιτώνοντας το ματσάρισμα με τη βάση)

    θα είναι πιο γρήγορο όσον αφορά το performance?

    ποιο σωστό, ποιο θα είναι?

    Συγνώμη για το πρήξιμο!

    (έχω ξεκινήσει ήδη τις ενέργειες για να περάσω σε asp.net, θέλει όμως χρόνο!)

    Ευχαριστώ για το χρόνο σας...

    Αν το δεις, ψυχρά, αν κάποιος χρήστης καταλάβει το μηχανισμό με το url και το cookie, μπορεί να κατασκευάσει το id στο URL και να ξεγελάσει τον μηχανισμό ελέγχου σου, κάτι που δεν θα το ήθελες.

    Μην σε αγχώνει το κόστος perfomance του SELECT που θα κάνεις στη βάση, σε κάθε σελίδα στην βάση σου για να εξασφαλίσεις ότι το id είναι υπαρκτό και επαληθεύεται η εγκυρότητά του. Μπορείς να το αντιμετωπίσεις με caching σε επίπεδο web application, που το result set θα ανανεώνεται μόνο όταν υπάρχουν αλλαγές σε αυτό.

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  30-11-2006, 09:56 21431 σε απάντηση της 21403

    Απ: Ποια μέθοδο να χρησιμοποιήσω;


     gcapnias wrote:

    Αν το δεις, ψυχρά, αν κάποιος χρήστης καταλάβει το μηχανισμό με το url και το cookie, μπορεί να κατασκευάσει το id στο URL και να ξεγελάσει τον μηχανισμό ελέγχου σου, κάτι που δεν θα το ήθελες.



    Το id θα φτιάχνεται από μία βάση (autonumber ας πούμε)
    θα περνάει στο cookie
    και μετά θα περνάει από σελίδα σε σελίδα μέσω url και θα γίνεται επαλήθευση με το cookie

    θα ήταν δυνατό να προσπελαστεί μόνο αν ο χρήστης μπορούσε να φτιάξει ένα cookie με το αντίστοιχο id
    έτσι δεν είναι;

    απ'οτι κατάλαβα μου προτείνεις να κάνω ματσάρισμα με τη βάση...

    ευχαριστώ πάντως
  •  30-11-2006, 20:28 21475 σε απάντηση της 21431

    Απ: Ποια μέθοδο να χρησιμοποιήσω;

     Efthimis wrote:

    θα ήταν δυνατό να προσπελαστεί μόνο αν ο χρήστης μπορούσε να φτιάξει ένα cookie με το αντίστοιχο id
    έτσι δεν είναι;

    απ'οτι κατάλαβα μου προτείνεις να κάνω ματσάρισμα με τη βάση...

    Από την γραμμή που δείχνει την διεύθυνση που βρίσκεσαι σε ένα browser μπορείς να δώσεις κάτι του τύπου:

    Java script:document.cookie="...";

    και να γράψεις ένα cookie στον browser.

    Στο επόμενο post/get της σελίδας το cookie θα πάει στο server, και θα σε κάνει match σαν ότι θες...

    Μην το σκέφτεσαι σαν μηχανισμό authentication...

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  01-12-2006, 09:16 21493 σε απάντηση της 21475

    Απ: Ποια μέθοδο να χρησιμοποιήσω;

    χμμμ το 'πιασα...

    ευχαριστώ πολύ για τις συμβουλές και για τον χρόνο που διαθέσατε...

    ήταν πράγματι πολύ κατατοπιστικές...
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems