Md5 Decrypt Μόνο Για Το Site Μας

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

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

Απάντηση
Άβαταρ μέλους
stewas
Script Master
Δημοσιεύσεις: 436
Εγγραφή: 25 Αύγ 2009 13:48
Τοποθεσία: Πάργα - Αθήνα και Ιωάννινα Πλέον
Επικοινωνία:

Md5 Decrypt Μόνο Για Το Site Μας

Δημοσίευση από stewas » 08 Αύγ 2010 15:57

Πολλά ακούγονται για την κωδικοποίηση αυτή. Άλλοι λένε ότι σπάει και άλλοι ότι δεν σπάει. Ποιά είναι η πραγματικότητα? Η md5 ειναί hash (το τι σημαίνει αυτό θα το δείτε εδώ http://en.wikipedia.org/wiki/Cryptograp ... h_function). Άρα λοιπόν είναι one way encrypt. Τι γίνεται λοιπόν άμα εμείς αποθυκεύουμε passwords στο site μας και θέλουμε όταν ο χρηστής χρησιμοποιεί το forgot pass να του βγάζει το υπάρχων κωδικό του?

Η λύση είναι πολύ απλή αλλά αρκετά "τσάτσικη".

λοιπόν τι κανουμέ?
κατά το register που κάνει καθέ χρήστης χρησιμοποιώντας τον κωδίκο του αυτός αποθηκεύεται στον πίνακα $_POST. Ας υποθέσουμε οτι το πεδίο του κωδικού έχει το όνομα password. Άρα ο κωδικός θα μπαίνει εδώ $_POST['password']. Εφόσον όλα είναι σωστά κάποια στιγμή στον php κώδικα μας θα υπάρχει αυτό

Κώδικας: Επιλογή όλων

$md5_κωδικοποιημένος_κωδικός=md5($_POST['password']);
mysql_qyery=(INSERT INTO όνομα_βάσης VALUES ('όνομα_χρήστη','$md5_κωδικοποιημένος_κωδικός',email));
"Ε καί?" θα μου πείτε. Πως θα σας φαινόταν άμα είχαμε και μία δεύτερη βάση όπου θα υπήρχαν οι md5 κωδικοι και η κανονική αντιστοίχηση τους? Άρα φτιάχνουμε μία νέα βάση δικία μας μόνο η οποιά πρέπει να είναι καλά προστατευμένη, με πεδία word για τον κανονικό κωδικό και encryptedword για τον κωδικοποιημένο. Εφόσον η βάση αυτή υπάρχει προσθέτουμε τον παρακάτω κώδικα στην σελίδα μας κάτω απο τον προηγούμενο

Κώδικας: Επιλογή όλων

mysql_qyery=(INSERT INTO όνομα_βάσης_με_κωδικοποιημένους_κωδικούς VALUES (word='$_POST['password']',encryptedword='$md5_κωδικοποιημένος_κωδικός'));
Συνεπώς, όταν ένας χρήστης πατάει forgot pass θα πηγαίναμε και θα ρωτάγαμε και της 2 βάσεις

Κώδικας: Επιλογή όλων

$pass=mysql_query=(SELECT word.όνομα_βάσης_με_κωδικοποιημένους_κωδικούς FROM όνομα_βάσης_με_κωδικοποιημένους_κωδικούς,όνομα_βάσης WHERE όνομα_χρήστη.όνομα_βάσης=$_POST['username_from_forgot_pass'] AND encryptedword.όνομα_βάσης_με_κωδικοποιημένους_κωδικούς=$md5_κωδικοποιημένος_κωδικός.όνομα_βάσης);
έπειτα με ανάλογο χειρισμό του $pass έχουμε τον "αποκωδικοποιημένο" κωδικό.
Αυτά...Περιμένω σχόλια

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

Md5 Decrypt Μόνο Για Το Site Μας

Δημοσίευση από mrpc » 08 Αύγ 2010 16:12

Καλό, αλλά προσωπικά προτιμώ κατά τη διαδικασία, αντί να του στέλνουμε το υπάρχον password, να δημιουργούμε νέο.
Αυτό έχει πολλαπλά οφέλη.

Άβαταρ μέλους
stewas
Script Master
Δημοσιεύσεις: 436
Εγγραφή: 25 Αύγ 2009 13:48
Τοποθεσία: Πάργα - Αθήνα και Ιωάννινα Πλέον
Επικοινωνία:

Md5 Decrypt Μόνο Για Το Site Μας

Δημοσίευση από stewas » 08 Αύγ 2010 16:20

και έχει απόλυτο δίκιο.Απλά το ανέφερα έτσι για να υπάρχει. Να ανεβάσω και εγω ενα script βρε αδερφε μου :)

Άβαταρ μέλους
Pavel
Honorary Member
Δημοσιεύσεις: 1046
Εγγραφή: 08 Αύγ 2003 00:05
Τοποθεσία: UK

Md5 Decrypt Μόνο Για Το Site Μας

Δημοσίευση από Pavel » 08 Αύγ 2010 16:27

Δεν συμφωνώ σε καμία περίπτωση να του "θυμίζει" το παλιό του password, αλλά αφού θέλεις να το κάνεις έτσι, γιατί να μην χρησιμοποιήσεις κάτι άλλο αντί του md5 που να μπορείς να το αποκρυπτογραφήσεις;

π.χ. http://php.net/manual/en/book.mcrypt.php

Επειδή το να κρατάς duplicate δεδομένα δεν είναι και ό,τι καλύτερο.
Εσύ είσαι τρελός.

Άβαταρ μέλους
stewas
Script Master
Δημοσιεύσεις: 436
Εγγραφή: 25 Αύγ 2009 13:48
Τοποθεσία: Πάργα - Αθήνα και Ιωάννινα Πλέον
Επικοινωνία:

Md5 Decrypt Μόνο Για Το Site Μας

Δημοσίευση από stewas » 08 Αύγ 2010 16:31

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

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Md5 Decrypt Μόνο Για Το Site Μας

Δημοσίευση από Rapid-eraser » 08 Αύγ 2010 17:31

Τα hashing functions είναι γνωστό ότι πάσχουν από collisions attacks εδώ και πάρα πολύ καιρό, δεν είναι κάτι κρυφό άλλωστε αποδεικνύετε και μαθηματικώς χωρίς κανένα μυστικιστικό hacking. To πρόβλημα βρίσκεται στα sbox του αλγορίθμου τα οποία παράγουν για δεδομένες σειρές εικόνες που παράγουν ίδια hash.

Η τεχνική που προτείνεις λέγετε masking και είναι ακριβός το ίδιο με το να κάνει διπλό πέρασμα με τον ίδιο αλγόριθμο (που ήταν και η αρχική διέξοδος μέχρι να αναπτυχθούν ισχυρότεροι αλγόριθμοι hashing).

Αρχικά εγκαταλείπουμε το md5 και sha1 και περνάμε σε hash sha256 στα οποία χρησιμοποιούμε διπλά περάσματα του αλγορίθμου.
Μάλιστα το πιo συνετό είναι να μην κάνουμε expose με οποιοδήποτε τρόπο to stored hash αλλά να συνοδεύετε με ένα salt που θα είναι μεταβλητό το οποίο δεν θα αφήνει να γίνετε expose το ίδιο hash για σταθερή τιμή αποθηκευμένου hash.


Τώρα αν πρόκειται για απλή σύγκριση χωρίς να μας ενδιαφέρει η αρχική τιμή τότε ο δρόμος του hashing είναι ο ποιο ασφαλής και δεν χρειάζεται αμφίδρομη κωδικοποίηση.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
technotes
Δημοσιεύσεις: 3
Εγγραφή: 05 Μάιος 2010 14:12
Επικοινωνία:

Md5 Decrypt Μόνο Για Το Site Μας

Δημοσίευση από technotes » 08 Αύγ 2010 19:09

Για ασφάλεια σώζεις το password με sha256:

PHP 5 >= 5.1.2
$userpass = hash('sha256','user pass');

Για πιο advanced λύσεις βάζεις και λίγο salt:

$salt = 'random string'; // πχ 9 characters: j81n_92ka
$userpass = 'selected password';
$pass = hash('sha256',$salt.$userpass);

Σε περίπτωση που κάποιος παραβιάσει την βάση σου θα βρει hashes τα οποία δεν μπορεί να τα κάνει revert χωρίς το salt hash.

Και όταν ο χρήστης ξεχάσει το password του φτιάχνεις ένα καινούργιο.
Web developer
- twitter
- site

Άβαταρ μέλους
stewas
Script Master
Δημοσιεύσεις: 436
Εγγραφή: 25 Αύγ 2009 13:48
Τοποθεσία: Πάργα - Αθήνα και Ιωάννινα Πλέον
Επικοινωνία:

Md5 Decrypt Μόνο Για Το Site Μας

Δημοσίευση από stewas » 08 Αύγ 2010 19:17

μμμ αυτό μου θυμίζει λίγο τον αλγόρυθμο της τεχνολογίας SSL....

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

Md5 Decrypt Μόνο Για Το Site Μας

Δημοσίευση από dva_dev » 08 Αύγ 2010 19:39

Δεν ρίχνεις μια ματιά και σε AES
http://dev.mysql.com/doc/refman/5.1/en/ ... es-encrypt

Άβαταρ μέλους
stewas
Script Master
Δημοσιεύσεις: 436
Εγγραφή: 25 Αύγ 2009 13:48
Τοποθεσία: Πάργα - Αθήνα και Ιωάννινα Πλέον
Επικοινωνία:

Md5 Decrypt Μόνο Για Το Site Μας

Δημοσίευση από stewas » 08 Αύγ 2010 22:48

παιδιά εγώ πρόσφερα ένα απλό βοηθημα - script και όλοι σας δώσατε λύσεις πολύ καλύτερες. Σας ευχαριστώ θερμά για αυτό. Διευρύνονται οι ορίζοντες όλων μας κάντοντας μας καλύτερους. Χαίρομαι και εκτιμώ την συνεργατικότητα και τις υποδείξεις-προσθέσεις όλων σας. Ευχαριστώ και πάλι

Απάντηση

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

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

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