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

 

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

UserName Validation

Îåêßíçóå áðü ôï ìÝëïò mdtgr. Τελευταία δημοσίευση από το μέλος KelMan στις 26-03-2007, 19:45. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  18-03-2007, 13:43 26619

    UserName Validation

    Φτιάχνω μια εφαρμογή και ξεκινάει με LoginForm. Ποιός είναι κατά τη γνώμη σας ο καλύτερος τρόπος για User Validation; Πως είναι καλύτερα να διαβάσω τον πίνακα στην βάση, με Select, με Reader ή κάτι άλλο; Πως μπορώ να αποφύγω να ανοίξει κάποιος τη βάση και τον πίνακα και να δει τα data (encryption???). Υπάρχουν διαθέσιμα links;


    Μάνος Τ.
  •  18-03-2007, 14:02 26620 σε απάντηση της 26619

    Απ: UserName Validation

    Υπάρχει κάποιος συγκεκριμένος λόγος για τον οποίο δεν θα ήθελες να βλέπουν τα δεδομένα της βάσης?Μην ξεχνάς ότι τα δεδομένα είναι του χρήστη κι όχι δικά σου, οπότε δεν μπορείς να τον περιορίσεις να κάνει οτιδήποτε θέλει μ'αυτά, ακόμα και να τα μεταφέρει μελλοντικά σε ανταγωνιστική εφαρμογή.

    Εάν θέλεις μπορείς να κρυπτογραφήσεις τα δεδομένα των password.Μπορείς να τα κάνεις hash και κάθε φορά που ο χρήστης δίνει ενα password να συγκρίνεις τα 2 hashes ώστε να δεις εάν το password ήταν σωστό. Έτσι προστατεύεις και το password όπου και να το δει κάποιος, δεν μπορεί να καταλάβει τι γίνεται, γιατί είναι hashed.


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  18-03-2007, 15:29 26622 σε απάντηση της 26620

    Απ: UserName Validation

    Τα περιεχόμενα ενός Table όπου αποθηκεύονται UserNames & Passwords νομίζω ότι μόνο ένας administrator πρέπει να τα βλέπει αλλιώς ο καθένας μπορεί να βρει συνδυασμούς UserName & Passwords με ανεξέλεγκτα αποτελέσματα.

    Μήπως όμως θα μπορούσες να μου εξηγήσεις περισσότερο τι σημαίνει hash? Και ποιός είναι ο καλύτερος τρόπος να διαβάζω το συγκεκριμένο table να συγκρίνω τα περιεχόμενα των UserNameTextBox & PasswordTextBox και να επιτρέπω την πρόσβαση στην εφαρμογή μόνο στο σωστό συνδυασμό UserName & Password


    Μάνος Τ.
  •  26-03-2007, 15:16 27083 σε απάντηση της 26622

    Απ: UserName Validation

    Υπάρχουν 2 τρόποι κωδικοποίησης.
    1) το encrypt - decrypt, όπου ένα κείμενο το μετατρέπεις μέσω ενός αλγορίθμου σε κινέζικα και ύστερα με τον "αντίστροφο" αλγόριθμο το μετατρέπεις ξανά στο πρωτότυπο κείμενο.
    2) το hash αυτό που ουσιαστικά κάνει είναι να μετατρέπει το κείμενο σε κινέζικα μέσα από μονόδρομο αλγόριθμο. Δεν μπορείς δηλαδή (θεωρητικά) αν έχεις το hashed κείμενο να το μετατρέψεις στο αρχικό.

    Όταν θέλεις να κάνεις logon και επιβεβαίωση κωδικού μέσω hash αυτό που κάνει το πρόγραμμα είναι να χρησιμοποιεί τον ίδιο μονόδρομο αλγόριθμο και ύστερα να ελέγχει τα δύο hashed κείμενα (το αποθηκευμένο στην βάση και αυτό που δίνει ο χρήστης)
    Σκέψου το σαν μια συνάρτηση που δίνει το τετράγωνο του αριθμού:
    364755343^2 (=1,33046Ε+17)

    Το να υπολογίσεις το τετράγωνο είναι πολύ εύκολο. Μπορεί να σου πάρει μερικά λεπτά αν το κάνεις με το χέρι, αλλά αν προσπαθήσεις να υπολογίσεις την ρίζα του αποτελέσματος, πιθανότατα να χρειαστείς αρκετή ώρα.
    Φαντάσου τώρα ότι έχεις ένα αριθμό με περισσότερα από 100ψηφία...
    Οι hash αλγόριθμοι βέβαια είναι "περισσότερο" μονόδρομοι απ' ότι αυτός του υπολογισμού του τετραγώνου, αυτό ήταν απλά ένα παράδειγμα.

    Δεν νομίζω να έχεις πρόβλημα (ακόμα και αν κάνεις SELECT), αρκεί να μην σώζεις πουθενά τον κωδικό. Εγώ τουλάχιστον με SELECT δουλεύω...
    Ελπίζω να βοήθησα.
  •  26-03-2007, 19:45 27098 σε απάντηση της 26619

    Απ: UserName Validation

    Θέτεις πολλά ερωτήματα σε ένα post οπότε ας τα δούμε από την αρχή...

    Ως προς το user validation, όπως είπαν και οι προηγούμενοι, μια καλή λύση - και απλούστερη σε σχέση με το encryption - είναι ο μηχανισμός του hashing αρκεί να μην έχεις ως απαίτηση την ανάκτηση του password καθώς δεν αποθηκεύεται πουθενά με την αρχική του μορφή.

    Ως προς το διάβασμα από τη βάση, ισχύει ο γενικός κανόνας ότι θα πρέπει να κρατάς τα credentials όσο το δυνατόν λιγότερο στη μνήμη.  

    Ως προς τη βάση και τα data, γενικά δεν κρυπτογραφούνται τα δεδομένα στο σύνολό τους γιατί κάτι τέτοιο, αν και εφικτό, έχει μεγάλο κόστος ως προς το performance. Θα πρέπει να ξεχωρίσεις τα πιο ευαίσθητα και να κρυπτογραφίσεις αυτά.

    Πάντως γενικότερα, η υπόθεση του security δεν λύνεται απλά με μερικές συνταγές και δεν είναι κάτι που αφορά μόνο την εφαρμογή σου και τη βάση. Είναι ένα θέμα που αφορά τη συνολική σχεδίαση του συστήματος και ξεκινάει από πολύ μικρές λεπτομέρειες (όπως πχ χρήση του SecureString αντί του String) και φτάνει μέχρι την φυσική πρόσβαση στο s/w και h/w.

    Αυτό που μπορείς να κάνεις για να αντιμετωπίσεις το πρόβλημα πιο ορθολογικά, είναι αρχικά να αναλύσεις από ποιές απειλές θες να προστατέψεις το σύστημά σου. Από τον hacker; Τον κακόβουλο power user; Τον περίεργο adminitrator; Τι "ζημιά" μπορεί να σου κάνει ο καθένας από αυτούς; Συμφέρει να επενδύσεις χρόνο και κόπο για να προστατέψεις το σύστημά σου για τις απειλές που θα προσδιορίσεις; Ένα σύστημα ποτέ δεν μπορεί να είναι 100% secure, οπότε καλό είναι να αποφασίσεις μέχρι πιο βαθμό θα προσπαθήσεις να το προστατέψεις, να συμφιλιωθείς με το ενδεχόμενο να συμβεί η στραβή και να καταστρώσεις σχέδιο για την επόμενη μέρα...


    Vir prudens non contra ventum mingit
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems