অথোরাইজেশনে লবণ যোগ করা
এখন আমাদের অথোরাইজেশন পরিবর্তন করতে হবে। এখানে পরিবর্তনগুলি আরও উল্লেখযোগ্য হবে।
লগিন-পাসওয়ার্ড জোড়ার সঠিকতা তাত্ক্ষণিকভাবে, একটি অনুরোধে যাচাই করা আর সম্ভব হবে না। কারণ: পাসওয়ার্ড যাচাই করতে, আমাদের এর নোনা হ্যাশ পাওয়া দরকার, এবং লবণ ডাটাবেসে সংরক্ষিত থাকে এবং প্রতিটি লগিনের জন্য অনন্য।
প্রথমে শুধুমাত্র লগিন অনুসারে রেকর্ডটি পেতে হবে, লবণ পড়তে হবে, প্রবেশ করা পাসওয়ার্ডে লবণ যোগ করে ডাটাবেস থেকে নোনা পাসওয়ার্ডের সাথে তুলনা করতে হবে এবং শুধুমাত্র যদি তারা মেলে, - ব্যবহারকারীকে অথোরাইজ করুন।
মনে রাখবেন, এমন হতে পারে যে লগিন ভুলভাবে প্রবেশ করা হয়েছে, এই ক্ষেত্রে পাসওয়ার্ড যাচাই করা উচিত নয়, তবে অবিলম্বে দেখানো উচিত যে অথোরাইজেশন সম্ভব নয় - ডেটা সঠিক নয়:
<?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 {
// এই লগিন সহ কোন ব্যবহারকারী নেই, একটি বার্তা দেখাবে
}
?>
সুরক্ষার উদ্দেশ্যে, ব্যবহারকারীকে সাধারণত বলা হয় না যে ঠিক কী মেলেনি - লগিন বা পাসওয়ার্ড, যাতে হ্যাকারদের দ্বারা লগিন-পাসওয়ার্ড জোড়া অনুমান করা জটিল হয়ে ওঠে। কেবলমাত্র একটি বার্তা দেখায় যে লগিন-পাসওয়ার্ড জোড়াটি ভুল বা এমন কিছু।
নোনা পাসওয়ার্ড সহ উপরে বর্ণিত অথোরাইজেশন বাস্তবায়ন করুন। নিবন্ধন করার চেষ্টা করুন, লগইন করুন, নিশ্চিত করুন যে সবকিছু কাজ করে।