PDA

View Full Version : جلوگیری از دسترسی کاربران به سمت سرور از طریق ایجکس



sun2rise
پنج شنبه 27 مهر 1396, 13:42 عصر
سلام دوستان من برای یه سری ارتباطات مجبورم از ایجکس استفاده کنم حالا وقتی که ایجکس رو پیاده میکنم به غیر از اینکه برنامه میتونه به سمت سرور متصل بشه کاربر هم میتونه به راحتی به سمت سرور متصل بشه و پارامتر بفرسته من میخوام فقط برنامه بتونه پارامتر بفرسته به سمت سرور و کاربر نتونه اتصالی به سمت سرور برقرار بکنه
راه حل شما برای این قضیه چیه؟

Moien Tajik
پنج شنبه 27 مهر 1396, 15:51 عصر
از JWT Authentication (https://jwt.io/) استفاده کنید.

Tekyegah
جمعه 28 مهر 1396, 02:38 صبح
Dim StrLinked As String = Request.ServerVariables.Item("HTTP_REFERER")
If StrLinked = "" Then
StrLinked = "ورود مستقیم"
End If
Response.Write(StrLinked)

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

sun2rise
جمعه 28 مهر 1396, 22:55 عصر
Tekyegah (http://barnamenevis.org/member.php?121173-Tekyegah) :
خب اینجوری که شما میگید درست ولی اگه کاربری بیاد از طریق دستکاری در کدهای سایت اسکریپت خودشو تزریق بکنه و شروع به ارسال اطلاعات از همون صفحه دارای مجوز بکنه که این کد در این صورت کار نمیکنه
به عنوان مثال تو مرورگر فایرفاکس کلیدهای ترکیبی shift+f4 رو بزنید و شروع به کدنویسی جاوا اسکریپت بکنید و بعدش گزینه run رو بزنید به راحتی اون کدها تو سایت تزریق شده و اجرا میشن
یه راه حلی باشه که در این صورت هم نشه اطلاعاتی ارسال کرد

Tekyegah
جمعه 28 مهر 1396, 23:36 عصر
آخه شما تو متن اولتون نوشتید برنامه بتونه درخواست ارسال کنه .
حالا میگید برنامه رو اینطوری Edit میکنن .
میشه دقیقا بگید چیکار میخواید انجام بدید ( یا بهتر بگم چه کاری نمیخواید انجام بدید با کدتون ) توضیح کاملتری بدید و مثال بزنید ... شاید بهتر بهشه راهنماییتون کرد .

mortezagt
شنبه 29 مهر 1396, 06:45 صبح
ایشون میخوان هیچ کاربری به هر طریقی که ممکنه نتونه درخواست به سمت سرور ارسال کنه و سعی کنه هک کنه سایت رو
حالا به هر روشی که ممکنه.
راهنمایی کنید که چطور میشه این مشکل رو برطرف کرد
مرسی

Tekyegah
شنبه 29 مهر 1396, 15:07 عصر
خب من خودم مثال میزنم
کاربر تو صفحه کنترل پنلشه و میخواد مثلا مطلبی رو که قبلا ارسال کرده حذف کنه .
روی کلید حذف که کلیک کنه ، من پارامتری رو سمت سرور یا همون صفحه engine خودم میفرستم شامل id اون مطلب و میگم حذفش کن .
اما قبل از حذف یه select میزنم، ببینم ارسال کننده مطلب همین کاربری هست که الان درخواست رو سمت سرور ارسال کرده یا نه .
در واقع کوکی کاربری که ارسال کنندست درخواست حذف هست رو با ارسال کننده مطلب چک میکنم .

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

mortezagt
شنبه 29 مهر 1396, 16:13 عصر
شما نباید برای همچین چیزایی از کوکی استفاده کنی چون ممکنه کوکی رو دستکاری کنن و ایدی یه نفر دیگه رو جایگزین کنن.
شما بهتره ایدی هر کاربر رو موقع لوگین توی سشن بریزی. هر زمان کاربر خواست درخواست حذف بده ، کد مطلب بعلاوه ایدی کاربر چک بشه یه همچین چیزی

select * from table where userid=@userid and comment=@comment


حالا شما دیگه اون مطلب رو بهمراه ایدی ارسال کننده توی بانک جستجو میکنی.
فکر کنم همین بود مشکلت

Tekyegah
یک شنبه 30 مهر 1396, 06:20 صبح
اگه کسی کوکی منو باز کنه به این مقدار برخورد میکنه : !/:.-!@-:/
من مقدارش رشتم رو میگیرم
کارکتر کارکتر جدا میکنم
هر کارکتر رو تبدیل به کد باینتری میکنم
ضربدر یه ضریب میکنم عدد رو
بعد یه رشته عددی بزرگ دارم
شروع گیکنم ریپلیس کرد
مثلا 1 رو میکنم *
2 میشه !
3 میشه %
چهار میشه #
و....
وقتی مقدار کوکی رو میگیرم همین مسیر رو برمیگردم .
صحبت شما درسته تا زمانی که اسم کاربر بدون دستکاری توی کوکی ذخیره شه