2009-11-17 11 views
15

क्या यह किसी एप्लिकेशन द्वारा उपयोग किए गए हैश पासवर्ड पर MySQL के पासवर्ड फ़ंक्शन का उपयोग करने के लिए अच्छा या बुरा अभ्यास माना जाता है? मैं पेशेवरों और विपक्ष देख सकता हूं। मैं उत्सुक हूं कि क्या यह सामान्य सहमति है कि यह अच्छा है या बुरा है।MySQL पासवर्ड फ़ंक्शन

उत्तर

21

MySQL के PASSWORD() समारोह राज्यों के लिए डॉक्स:

पासवर्ड() फ़ंक्शन MySQL सर्वर में प्रमाणीकरण प्रणाली द्वारा किया जाता है; आपको इसे अपने स्वयं के अनुप्रयोगों में उपयोग नहीं करना चाहिए।

हैशिंग और पासवर्ड संग्रहीत करने पर बेहतर सलाह के लिए "You're Probably Storing Passwords Incorrectly" पढ़ें।

एमडी 5 और एसएचए -1 को पासवर्ड के लिए उपयोग करने के लिए बहुत कमजोर माना जाता है। वर्तमान सिफारिश SHA-256 का उपयोग करना है।

मैंने SHA2() फ़ंक्शन का समर्थन करने के लिए MySQL पर एक पैच का योगदान दिया, और पैच स्वीकार कर लिया गया था, लेकिन चूंकि उनके रोडमैप बदल गए हैं, यह स्पष्ट नहीं है कि यह इसे रिलीज़ किए गए उत्पाद में कब बनाएगा।

इस बीच, आप अपनी प्रोग्रामिंग भाषा में हैशिंग और नमक का उपयोग कर सकते हैं, और डेटाबेस में परिणाम हैश डाइजेस्ट को बस स्टोर कर सकते हैं। यदि आप PHP का उपयोग करते हैं, तो SHA-256 hash() फ़ंक्शन में उपलब्ध है।

अद्यतन: MySQL 5.5.8 दिसंबर 2010 में जारी किया गया था, और उस रिलीज में SHA2() फ़ंक्शन के लिए समर्थन शामिल है।

+0

इस पोस्ट के लिए कोई अपडेट, यदि SHA2() अभी भी पासवर्ड फ़ंक्शन के प्रतिस्थापन के रूप में नवीनतम है? Thx – Charlesliam

+1

@ चार्ल्सलिआम, bcrypt, scrypt, या PBDKF2 देखें। –

10

यदि आप हैश पासवर्ड में डेटाबेस फ़ंक्शन का उपयोग कर रहे हैं तो परिभाषा के अनुसार उन्हें डेटाबेस में पहुंचने की ज़रूरत है: इसलिए मैं इसे "स्रोत" यानी आगे के आवेदन में बहुत अधिक करना पसंद करता हूं ताकि आप पास नहीं हो रहे हों खुलासा जानकारी के आसपास।

+7

+1 लवण और हैशिंग खाता पासवर्ड एक आवेदन मुद्दा है, ऐसा कुछ नहीं जिसे आप डीबीएमएस के विशेष कार्यान्वयन पर भरोसा करना चाहते हैं। – bobince

+0

शब्द, यह ऐसा कुछ नहीं है जिसे आप उपयोग करना चाहते हैं। बस OLD_PASSWORD और PITA को देखें जो तब हुआ जब MySQL ने अपनी हैशिंग विधि बदल दी। ऐप में ऐसा करने के लिए बहुत बेहतर है, आईएमओ। – jeffcook2150

6

मेरा मानना ​​है कि वास्तविक PASSWORD MySQL में फ़ंक्शन असुरक्षित है, और टूट गया है, लेकिन मुझे इस समय कोई लिंक नहीं मिल रहा है। मुझे पता है कि पुराने (OLD_PASSWORD 5 और ऊपर) निश्चित रूप से असुरक्षित है।

बेशक, सभी पासवर्ड हमेशा नमक (आगे अस्पष्टता के लिए) के साथ संग्रहित किया जाना चाहिए। उदाहरण:

UPDATE users SET password=MD5(CONCAT('salt', 'user provided value')) WHERE id=54 

भी MD5 समारोह नहीं है, लेकिन भारी इंद्रधनुष तालिकाओं के उदय के साथ, यह 100% पूरी तरह से संग्रहीत पासवर्ड मुश्किल होता करने का एक तरीका के रूप में विश्वसनीय नहीं है।

डाटाबेस तक पहुंचने से पहले एक बेहतर तरीका पासवर्ड (नमक के साथ) हैशिंग करना है। उदाहरण:

<?php 
$password = sha1(SALT.$_POST["password"]); 
$sql = "UPDATE users SET password='".$password."' WHERE id=54"; 
?> 
+3

password.c के कोड को देखते हुए, MySQL 4.1+ पासवर्ड को SHA1 के साथ इनपुट में दो बार लागू किया जाता है (बिना नमक के) और एक हेक्स स्ट्रिंग में परिवर्तित किया जाता है। –

+0

पासवर्ड भंडारण के लिए एक सामान्य हैश का उपयोग नहीं किया जाना चाहिए (हालांकि यह अभी भी सादा पाठ से काफी बेहतर है) आपको बीसीआरपीटी या अन्य कुंजी-व्युत्पन्न फ़ंक्शन का उपयोग करना चाहिए, जो कि ब्रूट-फोर्स अटैक के खिलाफ अधिक प्रतिरोधी है। –

+0

मैंने सोचा कि यह दो बार sha1 होना चाहिए? रेफरी: http: // stackoverflow।कॉम/प्रश्न/17766978/mysql-password-function-to-php – zx1986

संबंधित मुद्दे