Uchanganuzi wa Nywila kwenye PHP
Kuhifadhi nenosiri kwa fomu wazi sio sahihi. Mdukuzi wa kihalifu anaweza kupata ufikiaji kwa msingi wako wa data na kuiba nywila.
Kwa hiyo kawaida jina la mtumiaji huhifadhiwa kwa wazi,
lakini nenosiri huchanganuliwa na kitendo maalum
md5, ambacho huchukua nenosiri kama kigezo,
na hurudisha hash yake, ambayo hawezekani
kurejesha nenosiri halisi kutoka kwake.
Kwa mfano, wacha tupate hash ya mfuatano fulani:
<?php
echo md5('12345'); // itatoa '827ccb0eea8a706c4c34a16891f84e7b'
?>
Sasa tunahitaji kubadilisha usajili wetu na mfumo wetu wa kuingia. Kwanza ningependa kupendekeza kusafisha jedwali la watumiaji, kwani kwa sasa nywila zimehifadhiwa kwa fomu wazi, lakini zinapaswa kuhifadhiwa hashi zao. Kisha, wakati wa kupima usajili, jedwali litajazwa na data katika muundo mpya.
Wacha sasa tusahihishe usajili wetu ili wakati wa kuhifadhi mtumiaji mpya kwenye hifadhidata, badala ya nenosiri, hash yake iongezwe.
Hariri iliyoelezewe itakuwa kitu kama hiki:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // badilisha nenosiri kuwa hash yake
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
Wacha tuingize marekebisho sawa kwenye mfumo wa kuingia:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // badilisha nenosiri kuwa hash yake
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Ingiza mabadiliko kwenye usajili kwa kuzingatia uchanganuzi, sajilia watumiaji wawili wapya, hakikisha kuwa wameongezwa kwenye hifadhidata kwa nywila zilizochanganuliwa.
Ingiza mabadiliko kwenye mfumo wa kuingia kwa kuzingatia uchanganuzi, jaribu kuingia kwa kutumia watumiaji waliosajiliwa hapo awali.