PHP හි මුරපද හැෂිං කිරීම

මුරපදය විවෘත ආකාරයෙන් ගබඩා කිරීම නිවැරදි නොවේ. හැකර්-දුෂ්ට පුද්ගලයෙකුට ඔබේ දත්ත සමුදායට ප්‍රවේශ වී මුරපද සොරකම් කළ හැකිය.

එබැවින් සාමාන්‍යයෙන් පරිශීලක නාමය විවෘත ආකාරයෙන් ගබඩා කරන අතර මුරපදය විශේෂ ශ්‍රිතයක් මගින් හැෂ් කරනු ලබයි md5, මුරපදය පරාමිතියක් ලෙස ගන්නා අතර එහි හැෂ් එක ආපසු ලබා දෙයි, එයින් මුල් මුරපදය නැවත සකස් කළ නොහැක.

උදාහරණයක් වශයෙන්, යම් අකුරු වින්‍යාසයක හැෂ් එක සොයා බලමු:

html<?php
  echo md5('12345'); // '827ccb0eea8a706c4c34a16891f84e7b' ප්‍රතිදානය කරයි
?>

දැන් අපගේ ලියාපදිංචි කිරීමේ ක්‍රියාවලිය හා පිවිසුම් ක්‍රියාවලිය නවීකරණය කිරීම අවශ්‍ය වේ. මුලින්ම මම උපදෙස් දෙන්නේ පරිශීලකයින්ගේ වගුව හිස් කරන ලෙසයි, මන්ද එහි දැනට මුරපද විවෘත ආකාරයෙන් ගබඩා වී ඇත, නමුත් ඒවායේ හැෂ් අගයන් ගබඩා විය යුතුය. ඉන්පසුව ලියාපදිංචි කිරීම පරීක්ෂා කරන විට වගුව නව ආකෘතියේ දත්ත වලින් පුරවනු ඇත.

දැන් අපගේ ලියාපදිංචි කිරීමේ කේතය නිවැරදි කරමු, එනම් නව පරිශීලකයෙකු දත්ත සමුදායට සුරැකෙන විට මුරපදය නොව එහි හැෂ් අගය එකතු වන පරිදිය.

විස්තර කර ඇති නිවැරදි කිරීම මේ ආකාරයෙන් පෙනෙනු ඇත:

html<?php
  $login = $_POST['login'];
  $password = md5($_POST['password']); // මුරපදය එහි හැෂ් අගයට පරිවර්තනය කරන්න
  
  $query = "INSERT INTO users SET login='$login', password='$password'";
?>

පිවිසුම් ක්‍රියාවලියටද ඒ හා සමාන නිවැරදි කිරීම් සිදු කරමු:

html<?php
  $login = $_POST['login'];
  $password = md5($_POST['password']); // මුරපදය එහි හැෂ් අගයට පරිවර්තනය කරන්න
    
  $query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Задание 1

හැෂිං කිරීම සැලකිල්ලට ගනිමින් ලියාපදිංචි කිරීමේ කේතයේ වෙනස්කම් සිදු කරන්න, නව පරිශීලකයින් කිහිප දෙනෙකු ලියාපදිංචි කරන්න, ඔවුන් හැෂ් කරන ලද මුරපද සමග දත්ත සමුදායට එකතු වී ඇති බව සහතික වන්න.

Задание 2

හැෂිං කිරීම සැලකිල්ලට ගනිමින් පිවිසුම් කේතයේ වෙනස්කම් සිදු කරන්න, කලින් ලියාපදිංචි කරන ලද පරිශීලකයින් යටතේ පිවිසීමට උත්සාහ කරන්න.