ऑथराइजेशन में साल्ट जोड़ना
अब हमें ऑथराइजेशन बदलने की जरूरत है। यहाँ परिवर्तन अधिक महत्वपूर्ण होंगे।
अब लॉगिन-पासवर्ड जोड़ी की सहीता की जांच तुरंत, एक ही क्वेरी में करना संभव नहीं होगा। क्यों: क्योंकि पासवर्ड की जांच करने के लिए, उसका साल्टेड हैश प्राप्त करना होगा, और साल्ट डेटाबेस में स्टोर होती है और प्रत्येक लॉगिन के लिए यूनिक होती है।
पहले केवल लॉगिन के आधार पर रिकॉर्ड प्राप्त करनी होगी, साल्ट पढ़नी होगी, दर्ज किए गए पासवर्ड में साल्ट मिलानी होगी और डेटाबेस से प्राप्त साल्टेड पासवर्ड से तुलना करनी होगी और केवल तभी, जब वे मेल खाते हों, - उपयोगकर्ता को ऑथराइज करना होगा।
ध्यान रखें, ऐसा हो सकता है कि लॉगिन गलत दर्ज किया गया हो, इस मामले में पासवर्ड की जांच नहीं की जा सकती, और तुरंत यह दिखाया जा सकता है कि ऑथराइजेशन संभव नहीं है - डेटा गलत है:
<?php
$login = $_POST['login'];
$query = "SELECT * FROM users WHERE login='$login'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
if (!empty($user)) {
// इस लॉगिन वाला उपयोगकर्ता मौजूद है, अब पासवर्ड की जांच करनी होगी...
} else {
// इस लॉगिन वाला कोई उपयोगकर्ता नहीं है, संदेश दिखाएंगे
}
?>
आइए पासवर्ड जांच जोड़ते हैं:
<?php
$login = $_POST['login'];
$query = "SELECT * FROM users WHERE login='$login'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
if (!empty($user)) {
$salt = $user['salt']; // डेटाबेस से साल्ट
$hash = $user['password']; // डेटाबेस से साल्टेड पासवर्ड
$password = md5($salt . $_POST['password']); // उपयोगकर्ता का साल्टेड पासवर्ड
// साल्टेड हैश की तुलना करें
if ($password == $hash) {
// सब ठीक है, ऑथराइज करें...
} else {
// पासवर्ड मेल नहीं खाता, संदेश दिखाएंगे
}
} else {
// इस लॉगिन वाला कोई उपयोगकर्ता नहीं है, संदेश दिखाएंगे
}
?>
सुरक्षा कारणों से, उपयोगकर्ता को आमतौर पर यह नहीं बताया जाता कि क्या सही नहीं है - लॉगिन या पासवर्ड, ताकि हैकर्स द्वारा लॉगिन-पासवर्ड जोड़ी का अनुमान लगाना मुश्किल हो सके। बस यह संदेश दिखाया जाता है कि लॉगिन-पासवर्ड जोड़ी गलत है या कुछ इस तरह का।
ऊपर वर्णित साल्टेड पासवर्ड के साथ ऑथराइजेशन लागू करें। रजिस्टर करने का प्रयास करें, लॉगिन करें, सुनिश्चित करें कि सब कुछ काम करता है।