PDA

View Full Version : سوال: مشکل در اعتبارسنجی



farnaz.saeedi
دوشنبه 14 آذر 1390, 15:50 عصر
با سلام
دوستان من مقدار فیلد پسورد رو به اینصورت از میگیرم:


$password=md5(mysql_real_escape_string(trim($_POST['password'])));

حالا برای چک کردن این که کاربر پسورد و وارد کرده یا نه از این کد استفاده میکنم:


if ($password=='')

بعد اگه خالی بود مثلا یه متغییر مقدار دهی میشه
مشکل اینجاست که اگه فیلد پسورد خالی ارسال بشه این کد کار نمیکنه چون مقدار(خالی) بصورت هش شده در میاد به این مقدار تبدیل میشه d41d8cd98f00b204e9800998ecf8427e
اگه کدو به اینصورت تغییر بدم مشکل حل میشه:


if (password=='d41d8cd98f00b204e9800998ecf8427e')

چکار باید کنم که به همون صورت اول بتونم فیلدهامو بررسی کنم؟
سوال دیگه اینکه وقتی میخوام مثلا چک کنم که طول پسورد کمتر از 8 کاراکتر نباشه از این کد استفاده میکنم


if (strlen($password)<8)

که بازهم کار نمیکنه چون طول رشته الان 32 کاراکتره
ممنون میشم راهنمایی کنید

farnaz.saeedi
دوشنبه 14 آذر 1390, 16:02 عصر
یه راه حل که به ذهنم میرسه اینه که اول پسورد و بصورت معمولی بگیرم بعد از چک کردن از لحاظ طول و خالی نبودن اون و بصورت هش شده تو بانک ذخیره کنم
این راه از لحاظ امنیتی مشکلی نداره؟

pejman_view
دوشنبه 14 آذر 1390, 18:06 عصر
سلام

برای اینکه رمز عبور رو چک کنید، لازم نیست که متغیر $password رو چک کنید شما ورودی را چک کنید:


if (isset($_POST['pass'])){

اگر اوکی بود بقیه کد خودتان را ادامه دهید:

$password=md5(mysql_real_escape_string(trim($_POST['password'])));

اگر اوکی نبود که پیام خطا به کاربر نشان بده.

و برای طول هم از همان روشی که گفتم باید استفاده کنید شما باید از کد زیر استفاده کنید:

if (strlen($_POST['pass'])<8)

با آرزوی موفقیت

MMSHFE
دوشنبه 14 آذر 1390, 18:47 عصر
با سلام، خیر مشکلی نداره. شما ابتدا رشته اصلی یعنی ['POST['password_$ رو بررسی کنید و شرطهای لازم رو روی اون بگذارین و اگه شرایط توش صادق بود، توی کد از نسخه امن شده اون استفاده کنید. مهم اینه که توی کدتون اگه قراره در صفحه درج بشه با html_entities و... و اگه میخواین توی دیتابیس ذخیره کنید با mysql_real_escape_string یک نسخه امن ازش ایجاد کنید و اون رو به کار ببرین وگرنه موقع بررسی ورودیهای کاربر چاره ای ندارین جز اینکه اطلاعات خام واردشده رو بررسی کنید.
موفق باشید.

narsic
دوشنبه 14 آذر 1390, 19:57 عصر
با سلام
اگه مقدار کد گزاری شده رو بررسی کنید بهتره چون با حالت معمولی امکان رد کردن شرط وجود داره اما زمانی که شما یک رضته را کدگزاری میکنید نیازی به استفاده از تابع mysql_real_escape_string ندارید چون رشته بعد از کدگزاری امان میشود .
موفق باشید