PDA

View Full Version : بدست آوردن ip سیستم کاربر در asp.net



yekta64
سه شنبه 14 مهر 1388, 10:08 صبح
سلام دوستان
من دارم یه وب سایت طراحی می کنم
اینکه چطور می تونم ip سیستم کاربر رو بدست بیارم به ip سیستم برای این نیاز دارم که مثلا همن تالار اگه کاربر بیش از 5 بار useranem یا password خودش رو اشتباه وارد کرد اون رو تا 15 دقیقه از دسترسی به سایت منع کنه؟

naeeme
سه شنبه 14 مهر 1388, 10:21 صبح
به دست آرودن Ip کاربر:


HttpContext.Current.Request.UserHostAddress

yekta64
سه شنبه 14 مهر 1388, 11:04 صبح
به دست آرودن Ip کاربر:



HttpContext.Current.Request.UserHostAddress



مرسی
شما نمیدونید با استفاده از این ip چطور می تونم دسترسی رو تا یه زمان معین محدود کنم؟

یه سوال دیگه هم داشتم
اینکه تعداد مشاهدات یه مثلا تاپیک رو چطور می تونم پیدا کنم ؟

m.hamidreza
سه شنبه 14 مهر 1388, 16:00 عصر
کاربر بیش از 5 بار useranem یا password خودش رو اشتباه وارد کرد اون رو تا 15 دقیقه از دسترسی به سایت منع کنه؟

این IP نمیخواد! تعداد دفعاتی که روی باتن ورود کلیک میکنه و یوزر یا پسوردش اشتباه هست رو میشماری اگه از 5 بیشتر شد زمان آخرین باری که روی باتن کلیک کرده رو در دیتابیس درج میکنی. برای هر باری که یه نفر میخواد لاگین کنه از همون جدول یوزر و پسوردها اول میای چک میکنی ببینی یه همچین کاربری شمارنده لاگینش 5 هست یا نه. اختلاف زمان حال رو با اون زمانی که درج شده در دیتابیس پیدا میکنی اگه کمتر از 15 دقیفه بود نمیذاری لاگین کنه و اگه نبود و یوزر و پسورد درست بود فیلد شمارنده رو صفر میکنی و اخرین زمان لاگین رو هم به زمان فعلی آپدیت میکنی.
موفق باشید.

yekta64
پنج شنبه 16 مهر 1388, 10:47 صبح
به نظر من این کار مثل این می مونه که لقمه رو دور سرمون بچرخونیم و بعد هم نخوریم , و به خوردنش فکر کنیم !

عزیز من ! شما می تونی به راحتی از کوکی استفاده کنی و هر بار در صورت غلط بودن نشانه های کاربری کوکی رو overide کنی !
به همین راحتی !

ممنون میشه خواهش کنم یه کم بیشتر توضیح بدی؟
اگه بشه یه مثال بزنید یه دنیا ممنون میشم

alireza_s_84
پنج شنبه 16 مهر 1388, 12:19 عصر
سلام دوست عزیز:


تعداد دفعاتی که روی باتن ورود کلیک میکنه و یوزر یا پسوردش اشتباه هست رو میشماری اگه از 5 بیشتر شد زمان آخرین باری که روی باتن کلیک کرده رو در دیتابیس درج میکنی. برای هر باری که یه نفر میخواد لاگین کنه از همون جدول یوزر و پسوردها اول میای چک میکنی ببینی یه همچین کاربری شمارنده لاگینش 5 هست یا نه. اختلاف زمان حال رو با اون زمانی که درج شده در دیتابیس پیدا میکنی اگه کمتر از 15 دقیفه بود نمیذاری لاگین کنه و اگه نبود و یوزر و پسورد درست بود فیلد شمارنده رو صفر میکنی و اخرین زمان لاگین رو هم به زمان فعلی آپدیت میکنی.
برای اینکار شما باید در جدول مربوط به اطلاعات کاربر فیلدهای زیر رو داشته باشید:
ClickCount: تعداد دفعاتی که کاربر روی Button ورود کلیک کرده.
ClickTime: زمان کلیک روی Button ورود که همواره زمان حال رو در خودش داره(مقدار پیش فرضش میشه ()Now)
حالا وقتی کاربر خواست لاگین کنه شما مقدار ClickCount رو چک کنید اگر از 5 بیشتر بود حالا مقدار ClickTime رو چک کنید (از زمان حال 15 دقیقه کم کنید اگر از این زمان کمتر بود یعنی هنوز 15 دقیقه نشده و گرنه مقدار کلیکها رو صفر میکنیم و در صورت صحیح بودن اطلاعات اجازه ورود میدیم) .
حالا اگه کاربر اطلاعاتش رو غلط وارد کرده باشه مقدار ClickCount رو یک واحد افزایش میدیم. و گرنه مقدار ClickCount رو برابر 0 قرار میدیم.


ه نظر من این کار مثل این می مونه که لقمه رو دور سرمون بچرخونیم و بعد هم نخوریم , و به خوردنش فکر کنیم !

عزیز من ! شما می تونی به راحتی از کوکی استفاده کنی و هر بار در صورت غلط بودن نشانه های کاربری کوکی رو overide کنی !
به همین راحتی !
در اینمورد هم میتونید یک کوکی داشته باشید با همین دو کلید و به همین ترتیب عمل کنید فقط به جای ذخیره در دیتابیس مقادیر موجود در کوکی رو به روز میکنید.
البته این روش وابسته به فعال بودن کوکی ها در کلاینته و احتمال خطاش هم بیشتره.(مثلا کاربر به عنوان مهاجم میتونه کوکی ها رو پاک کنه و دیگه شما نمیتونید محدودیت 15 دقیقه فقط 5 بار ورود اشتباه رو اعمال کنید)
بهتره از کوکی ها استفاده نکنید و همون روش ذخیره در دیتابیس رو انجام بدین.
البته یک راه دیگه هم وجود داره و اون وابسته به شی جلسه هست میتونید دفعات ورود رو در شی Session ذخیره کنید

شما دو متغیر Session داشته باشید مثلا:


Session["LastLogin"] = DateTime.Now();
Session["InvalidLoginCount"] = 0;
حالا کاربر لاگین میکنه شما چک میکنید بصورت زیر:


if (Session["InvalidLoginCount"] != null)
{
if (Convert.ToInt32(Session["InvalidLoginCount"]) <= 5) //اگر از 5 کوچکتر یا مساوی باشد یعنی کاربر هنوز اجازه وارد کردن اطلاعات را دارد
{
//عملیات مربوط به ورود جستجو برای بررسی صحت اطلاعات کاربری را قرار میدهیم
}
else // کاربر 5 بار اطلاعات غلط وارد کرده است
{
if (Convert.ToDateTime(Session["LastLogin"]).AddMinutes(15) >= DateTime.Now) // بررسی میکنیم که 15 دقیقه شده یا نه
{
Session["InvalidLoginCount"] = 0; //دوباره دفعات ورود اشتباه را 0 میکنیم
//عملیات مربوط به ورود جستجو برای بررسی صحت اطلاعات کاربری را قرار میدهیم
}
else //هنوز 15 دقیقه نشده
{
// یک پیغام به کاربر نشان میدهیم که هنوز 15 دقیقه نشده است
}
}
}
حالا یک Query برای پیدا کردن کاربری که لاگین کرده بنویسید:


SELECT Count(*)
FROM Members
WHERE (Username=[@Username]) AND ([Password]=[@Password]);
خوب حالا اگر کاربر با این مشخصات ثبت شده باشید پس تعداد کاربران میشه 1 (نتیجه بازگشتی این جستجو در دیتابیس)
اگر 0 باشه یعنی اطلاعات اشتباهه
دو حالت داره یا کاربر اصلا با این مشخصات وجود نداره یا اینکه فقط پسوردش اشتباهه
در هر حال شما اگر تعداد کاربران 0 بود مقدار Convert.ToInt32(Session["InvalidLoginCount"])+=1 و مقدار Session["LastLogin"] = DateTime.Now که اینجوری میشه.

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

yekta64
شنبه 18 مهر 1388, 09:04 صبح
سلام دوست عزیز:

برای اینکار شما باید در جدول مربوط به اطلاعات کاربر فیلدهای زیر رو داشته باشید:
ClickCount: تعداد دفعاتی که کاربر روی Button ورود کلیک کرده.
ClickTime: زمان کلیک روی Button ورود که همواره زمان حال رو در خودش داره(مقدار پیش فرضش میشه ()Now)
حالا وقتی کاربر خواست لاگین کنه شما مقدار ClickCount رو چک کنید اگر از 5 بیشتر بود حالا مقدار ClickTime رو چک کنید (از زمان حال 15 دقیقه کم کنید اگر از این زمان کمتر بود یعنی هنوز 15 دقیقه نشده و گرنه مقدار کلیکها رو صفر میکنیم و در صورت صحیح بودن اطلاعات اجازه ورود میدیم) .
حالا اگه کاربر اطلاعاتش رو غلط وارد کرده باشه مقدار ClickCount رو یک واحد افزایش میدیم. و گرنه مقدار ClickCount رو برابر 0 قرار میدیم.

در اینمورد هم میتونید یک کوکی داشته باشید با همین دو کلید و به همین ترتیب عمل کنید فقط به جای ذخیره در دیتابیس مقادری موجود در کوکی رو به روز میکنید.
البته این روش وابسته به فعال بودن کوکی ها در کلاینته و احتمال خطاش هم بیشتره.(مثلا کاربر به عنوان مهاجم میتونه کوکی ها رو پاک کنه و دیگه شما نمیتونید محدودیت 15 دقیقه فقط 5 بار ورود اشتباه رو اعمال کنید)
بهتره از کوکی ها استفاده نکنید و همون روش ذخیره در دیتابیس رو انجام بدین.
البته یک راه دیگه هم وجود داره و اون وابسته به شی جلسه هست میتونید دفعات ورود رو در شی Session ذخیره کنید البته اینکار توصیه نمیشه.
اگر نیاز به کد نویسی و یا راهنمایی بیشتر داشتید میتونید از طریق ایمیل بهم اطلاع بدین.
موفق باشید

مرسی دوست عزیر از توضیحات جامع و مفیدتون
ببینید من توی جدول یک سرس یوز و پسورد از پیش تعیین شده دارم حال چطور بخوام با هر بار کلیک کاربر اون دو فیلد رو پر کنم از طرفی اگه کاربر در بار هم یوزر و هم پسورد رو اشتباه وارد کرد چطور باید این دو فیلد مقدار دهی بشه؟

alireza_s_84
شنبه 18 مهر 1388, 14:28 عصر
مرسی دوست عزیر از توضیحات جامع و مفیدتون
ببینید من توی جدول یک سرس یوز و پسورد از پیش تعیین شده دارم حال چطور بخوام با هر بار کلیک کاربر اون دو فیلد رو پر کنم از طرفی اگه کاربر در بار هم یوزر و هم پسورد رو اشتباه وارد کرد چطور باید این دو فیلد مقدار دهی بشه؟

خواهش میکنم دوست عزیز
هم پست قبلیمو ویرایش کردم برای اینمورد شما هم پیغام خصوصی فرستادم
موفق باشید