PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : خطا در استفاده تابع هش پسورد , شا256



jahromy
July 3rd, 2016, 00:53
با سلام
کدی که برای صفحه لاگین نوشتم صحیح اجرا می شود
ولی به محض بکارگیری تابع hash درون کدها دچار مشکل می شوم بطوریکه وارد شرط if تعریف شده نمی شود و در هر صورت else را اجرا می کند.
اشکال کار را چطور رفع کنم






$password = hash("sha512",$password)





$res = mysql_query($query, $link);
$row = mysql_fetch_array($res);
if (mysql_num_rows($res) == '1')
{
session_start();
$_SESSION['username'] = $_POST['si_user'];
$_SESSION['password'] = $_POST['si_user'];
HEADER("LOCATION: home.php");
}
else
{
echo "Error User";
}

agrb.siyah
July 3rd, 2016, 02:16
با سلام
کدی که برای صفحه لاگین نوشتم صحیح اجرا می شود
ولی به محض بکارگیری تابع hash درون کدها دچار مشکل می شوم بطوریکه وارد شرط if تعریف شده نمی شود و در هر صورت else را اجرا می کند.
اشکال کار را چطور رفع کنم






$password = hash("sha512",$password)





$res = mysql_query($query, $link);
$row = mysql_fetch_array($res);
if (mysql_num_rows($res) == '1')
{
session_start();
$_SESSION['username'] = $_POST['si_user'];
$_SESSION['password'] = $_POST['si_user'];
HEADER("LOCATION: home.php");
}
else
{
echo "Error User";
}



سلام
لطفا کویری تون رو هم قرار بدید بررسی کنم
مواردی که باید تغییر بدید اینا هستن:
یک اینه ز توابع mysql_* استفاده نکنید چون بزودی منقضی میشه
دو تنها از هش استفاده نکنید و salt رندوم هم اضافه کنید
سه هش رو در کد پی اچ پی چک نکنید و در کویری چک کنید چون اگر در پی اچ پی چک کنید عملگر == به راحتی با حمله timing attack پسورد مشخص میشه و باید از تابع hash_eqal استفاده کنید
چهار در صورتی که هش رندوم رو اضافه کنید صد در صد باید در کویری مقدار هش رو چک کنید که اینجوری timing_attack هم نمیخوره و امنیت پسوردها هم بالا میره.
پنج درسته امنیت تابع md5 چند ساله مورد بحث هست ولی سرعتش از توابع sha بیشتره و با هش رندوم امنیت قابل قبولی خواهید داشت
موفق باشید

jahromy
July 3rd, 2016, 03:00
راهنمایی یکی از دوستان بخوبی به مشکل بنده اشاره کرد که ساختار پسورد در mysql از نوع Varchar32 بود که با تغییرش Varchar512 مشکل حل شد.
تازه نوشتن رو شروع کردم خیلی تجربه ندارم لطف می کنید راهنمایی بفرمایید

1. جایگزین جدید توابع mysql برای ارتباط با پایگاه چی هست؟
2. فرمایش شما درست
3. روش چک کردن در کوئری و استفاده تابع نمی دونم یکم با مثال ساده بگید ممنون می شم.
4. چرا فقط در کوئری باید چک بشه
5. یعنی استفاده از هش رندومی + md5 یا فقط ؟!

متشکر