Vahid 863 ارسال شده در اردیبهشت 91 گزارش بازنشر ارسال شده در اردیبهشت 91 طرز کار سیستم احراز هویتسیستم احراز هویت از دو قسمت تشکیل شده که در این آموزش قصد داریم هر دو آنها رو بسازیم. برای شروع به یک پردازشگر login نیاز داریم که درستی نام کاربری و کلمه ی عبور وارد شده در فرم رو چک کنه و به یک قطعه کد نیاز داریم که بتونیم اون رو در بالای هر اسکریپت قرار داد تا پیش از آنکه اجازه ی ادامه ی کار بدهد، اطمینان حاصل کند که کاربر احراز هویت شده است.کدی که چک میکنه کاربر احراز هویت شده یا نه رو باید تو یک فایل ضمیمه (auth.inc) قرار بدید. در اینصورت براحتی میتونید با قرار دادن دستور زیر در بالای هر اسکریپتی، از صفحه وب خودتون در برابر کاربران نا آشنا محافظت کنید.include "auth.inc"شما میتوانید با استفاده از یک متغیر، نام کاربری کاربر وارد شده رو ذخیره کنید. اگر این متغیر حاوی یک نام کاربری باشد، معلوم میشود که کاربر وارد شده است. خاج شدن کاربر هم بسادگی با حذف این متغیر انجام میشود. تا زمانی که هیچکس دیگری از حوزه میزبانی سایت شما استفاده نمیکند و نمیتواند نشستی ایجاد کند که باعث تداخل شود، سایت شما از امنیت کافی برخوردار خواهد بود. بنابراین فایل auth.inc میتواند واقعا به سادگی آنچه در زیر میبینید باشد:session_start();if (!isset ($_SESSION["auth_username"])) {echo "شما بايد وارد شويد تا اين برگه را ببينيد." ;exit;}اینجا اگه کاربر login نکرده باشه، فقط یه پیغام نشون میده بعدش هم از اسکریپت خارج میشه. ایجاد فرآیند loginفرم login نیازمند دو فیلد username و password و یک دکمه submit است. پس از آنکه این عناصر در فرم login گذاشته شده اند، خودتون میتونید استایل دلخواهتون رو به فرم بدین. فعلا با جدول بندی به فرم استایل میدیدم.<form action="login.php" method="post"><table border=0><tr><td>نام کاربری:</td><td><input type="text" size=10 name="username"></td></tr><tr><td>کلمه عبور:</td><td><input type="password" size=10 name="password"></td></tr></table><input type=submit value="ورود"></form>فیلد کلمه عبورفیلد نوع password دقیقا مثل فیلد نوع text کار میکند، با این تفاوت که هنگام تایپ کردن کارکترها آنها را مخفی میکند. تنها محدودیتی که فیلد کلمه عبور دارد این است که نمیتوان با خاصیت value برای آن مقدار پیش فرض تعیین کرد.این اسکریپت باید مقادیر نام کاربری و کلمه ی عبور ارسال شده را با استفاده از لیست کاربران مجاز چک کند. در بیشتر موارد، شما میتوانید این مقادیر را با اطلاعات موجود در بانک اطلاعاتی کاربران چک کنید که بعدا در مورد دسترسی به بانکهای اطلاعاتی در php صحبت خواهیم کرد، اما فعلا میتوانید از یک آرایه ی ساده که در آن اطلاعات کاربران مجاز به استفاده از سایت ذخیره شده است استفاده کنید.<?phpsession_start();$passwords = array("chris" => "letmein", "damon" => "thisisme", "shelley" => "mypassword", "vanessa" => "opensource");if (!$_post["username"] or !$_post["password"]) {echo "شما باید نام کاربری و کلمه ی عبور خود را وارد کنید." ;exit ;}if ($_post ["password"]== $passwords[$post["username"]]){echo "ورود با موفقیت"$_session["auth_username"] = $_post["username"];<br />}else {echo "ورود ناموفق";}?>ابتدا یک آرایه توصیفی از کلمات عبور ساخته میشود که اندیسهای آن، نامهای کاربری هستند. این اسکریپتها ابتدا چک میکند که نام کاربری و کلمه عبور هردو وارد شده باشند و اگر هر کدام از آنها وارد نشده باشد، فورا خارج میشود.سپس کلمه عبور وارد شده با عنصری از آرایه که نام کاربری است مقایسه میشود اگر هردو با یکدیگر مطابقت داشته باشند، کاربر اجازه ی ورود به سایت را پیدا میکند و متغیر auth_username مقدار دهی اولیه میشود. در غیر اینصورت پیغامیمبنی بر ورود نا موفق نشان داده میشود. 12 نقل قول لینک به ارسال
rezaonline 2655 ارسال شده در اردیبهشت 91 گزارش بازنشر ارسال شده در اردیبهشت 91 البته این روش به راحتی قابل دور زدن است . 1 نقل قول لینک به ارسال
Vahid 863 ارسال شده در اردیبهشت 91 مالک گزارش بازنشر ارسال شده در اردیبهشت 91 البته این روش به راحتی قابل دور زدن است .بله! این مطلب فقط برای آموزش هست. 1 نقل قول لینک به ارسال
Anisi 301 ارسال شده در اسفند 91 گزارش بازنشر ارسال شده در اسفند 91 البته این روش به راحتی قابل دور زدن است .چرا؟ چه مشکلی داره؟ چه کنیم که نشه دور زد؟منم از همین راه برای احراز هویت استفاده می کنم:public function isAdmin() {$myDb = new dbModel;session_start();$userAgent = $myDb->hashsalt($_SESSION['userAgent']);$userIp = $myDb->hashsalt($_SESSION['userIp']);if (!isset($_SESSION['username']) and empty($_SESSION['username']) || $userIp != $_SERVER['REMOTE_ADDR'] || $userAgent != $_SERVER['HTTP_USER_AGENT']){ session_destroy(); header("Location: index.php?op=user"); exit();}الان برای افزایش امنیت همین کد چیکار کنم؟ نقل قول لینک به ارسال
pary_daryayi 181 ارسال شده در اسفند 91 گزارش بازنشر ارسال شده در اسفند 91 الان برای افزایش امنیت همین کد چیکار کنم؟مثلا یه مورد اینکه سشن رو در پایگاه یا فایل ذخیره کنیم . 1 نقل قول لینک به ارسال
Anisi 301 ارسال شده در اسفند 91 گزارش بازنشر ارسال شده در اسفند 91 مثلا یه مورد اینکه سشن رو در پایگاه یا فایل ذخیره کنیم .اون که آره!ولی من سرور مجازی گرفتم که این مشکلو نداشته باشم! نقل قول لینک به ارسال
Parsa 23463 ارسال شده در اسفند 91 گزارش بازنشر ارسال شده در اسفند 91 استفاده از session در کل توصیه نمیشهیک روش اینه که هنگام لاگین کد تولید شده تصادفی را برای شناسایی کاربر استفاده کنیدو کد را در رکورد کاربر در دیتابیس ذخیره کنید + فیلدی برای حداکثر زمان لاگین 3 نقل قول لینک به ارسال
Anisi 301 ارسال شده در اسفند 91 گزارش بازنشر ارسال شده در اسفند 91 (ویرایش شده) استفاده از session در کل توصیه نمیشهیک روش اینه که هنگام لاگین کد تولید شده تصادفی را برای شناسایی کاربر استفاده کنیدو کد را در رکورد کاربر در دیتابیس ذخیره کنید + فیلدی برای حداکثر زمان لاگینممنون!این کارم کردم، این راه حل برای جلوگیری از حمله XSRF هست دیگه؟ نه؟!!و کارای دیگه: بعد از لوگین session_id، ریجنریت میشه، کلیدهای سشن به صورت کد شده ذخیره میشن، اصلا نام کاربری در سشن نیست فقط id کاربر هست. هر بار هم آی پی و user agent کاربر چک میشه. و همونطور که گفتم سرور هم مجازی هست. اینا کفایت می کنه یا بازم باید کار دیگه ای بکنم؟!! اگر هست راهنمایی کنید لطفا. ویرایش شده اسفند 91 توسط Anisi نقل قول لینک به ارسال
goiafanawari 0 ارسال شده در دی 99 گزارش بازنشر ارسال شده در دی 99 لطفا می شود کد کامل شو بدید؟ نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .