PDA

View Full Version : یه روش برای جلوگیری از هک شدن در ASP .NET



amir.NET2
شنبه 18 فروردین 1386, 15:32 عصر
با سلام

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

حالا می خوام وقتی کاربر دکمه رو زد و اطلاعات به پایگاه داده رفت تا 15 یا تا هر ثانیه یا دقیقه ای نتونه Submit کنه

اگه کسی می دونه لطفا کمک کنه

با تشکر

ghabil
شنبه 18 فروردین 1386, 15:40 عصر
این کار با جاوااسکریپت به راحتی انجام میشه کافیه بعد از زدن دکمه submit دکمه رو disable بکنی و یک تایمر هم بسازی با setTimeOut که بعد از 15 ثانیه مثلا دوباره Enable بکنه دکمه رو.
اما تو این روش اگر یکنفر یک ریکوست مستقیم بفرسته با Aspت دیگه فایده ای نداره ، برای این کار دیگه باید قبل از فرستادن ریسپانس چک کنی که LastAccess این Session بیشتر از 15 ثانیه پیش بوده باشه.

amir.NET2
شنبه 18 فروردین 1386, 15:48 عصر
LastAccess رو از کجا پیدا کنم

ghabil
یک شنبه 19 فروردین 1386, 01:58 صبح
HttpContext.Current.Timestamp


که باید در Sessionذخیره بشه.

Identifier
یک شنبه 19 فروردین 1386, 06:41 صبح
این کار با جاوااسکریپت به راحتی انجام میشه کافیه بعد از زدن دکمه submit دکمه رو disable بکنی و یک تایمر هم بسازی با setTimeOut که بعد از 15 ثانیه مثلا دوباره Enable بکنه دکمه رو.
اما تو این روش اگر یکنفر یک ریکوست مستقیم بفرسته با Aspت دیگه فایده ای نداره ، برای این کار دیگه باید قبل از فرستادن ریسپانس چک کنی که LastAccess این Session بیشتر از 15 ثانیه پیش بوده باشه.دز صورت ایجاد Session جدید باز امکان ارسال مجدد اطلاعات وجود دارد؛ اگر روش های فوق با استفاده از خاصیت Expires کوکی و همچنین با در نظر گرفتن IP فرد Submit ترکیب بشه میتونی از این کار تا حدی جلوگیری کنی !! و اگر این امر ضروریت بیشتری دارد در صورتی که عملیات Authentication و Authorization انجام مبشه راه کارهای های مناسب تری میشه ارائه داد.

amir.NET2
یک شنبه 19 فروردین 1386, 08:25 صبح
با سلام

مساله دقیقا همین جاست که کاربر هویت ناشناس داره ( یعنی ثبت شده نیست)

اگه کاربر ثبت شده بود تمام مشکلات حل بود

Identifier
یک شنبه 19 فروردین 1386, 09:01 صبح
اگه کاربر ثبت شده بود تمام مشکلات حل بوداز خاصیت های Cokie , Session و همچنین آدرس IP به صورت همزمان استفاده کن

amir.NET2
یک شنبه 19 فروردین 1386, 09:12 صبح
میشه یه مثال کوچیک واسم بزنید

ghabil
یک شنبه 19 فروردین 1386, 10:54 صبح
از خاصیت های Cokie , Session و همچنین آدرس IP به صورت همزمان استفاده کن

در صورتی که Authontication وجود نداره همونطور که آقای ذولقدری گفتند راه 100% وجود نداره! اما پس دیگه این داستان هک شدن چیه؟!

ضمنا حساب کردن روی IP هم گاهی اوقات دردسرزا میشه ،البته کاملا بستگی به مخاطبینت داره ، مثلا اگر از برنامت توی یک شبکه داخلی استفاده میشه مناسب هست ؛ اما توی اینترنت بعضا مشکل درست میکنه و فکر میکنم کوکی میتونه پیشنهاد خیلی خوبی باشه.
یعنی با هر ریکوست یک متغییر از نوع HttpCookie درست میکنی به Response.Cookies اضافه میکنی یا تو Valueش زمان الان رو بزن، یا Expiresh رو بزار 15 ثانیه بعد و همیشه قبل از Request هم Cookie رو میخونی...

amir.NET2
یک شنبه 19 فروردین 1386, 11:16 صبح
همین کارو کردن

هم از Session استفاده کردم و هم از Cookie ولی باز هم احتمال نفوذ هست

Identifier
یک شنبه 19 فروردین 1386, 16:14 عصر
هم از Session استفاده کردم و هم از Cookie ولی باز هم احتمال نفوذ هست


ضمنا حساب کردن روی IP هم گاهی اوقات دردسرزا میشه ،البته کاملا بستگی به مخاطبینت داره ، مثلا اگر از برنامت توی یک شبکه داخلی استفاده میشه مناسب هست ؛ اما توی اینترنت بعضا مشکل درست میکن


اگر توجه کنید من موارد فوق را به صورت همروند توصیه کردم در صورت بررسی این سه مورد به صورت همروند امکان انجام چنین عملی به حداقل می رسد نه 100%.