PDA

View Full Version : امنیت ارسال اطلاعات با get



ikallam
جمعه 11 اردیبهشت 1394, 13:36 عصر
سلام من اطلاعات جدول رو میخوم و بعد میخوام اطلاعات رو ویرایش یا حذف کنم -- حالا اگه از get استفاده کنم که هر کسی میتونه مثلا با وارد کردن یک id داخل url حذف یا ویرایش رو انجام بده چه طوری این مشکل رو برطرف کنم

<a href="send.php?t=m&&id='.$row['id'].'">
اگه بخوام از post استفاد کنم چی کار کنم
؟؟

m.esmaeilzadeh
جمعه 11 اردیبهشت 1394, 14:12 عصر
اگر هم post باشه باز میتونه مقادیر رو دستکاری کنه !!!
برای امنیت مقادیر عددی از تابع intval و برای اینکه فقط بتونه رکوردهایی مربوط به خودش رو چک کنه چیزایی مثل user_id یا مواردی که توی طراحی خودت هستش رو چک کن که مثلا نتونه سفارش های مشتری های دیگه رو پاک کنه ( این مثال برای فروش اینترنتی بود !!!! )

ikallam
جمعه 11 اردیبهشت 1394, 14:41 عصر
ممنون - ببینین من یک صفحه مدیریت دارم که مدیر میاد پرداخت ها رو تایید میکنه حالا کاربر میتونه خودش بیاد و ادرس اون صفحه رو بزنه و id مورد نظر خودش رو بزنه و اون پرداخت تایید بشه - (البته چک کردن این که طرف مدیر هست یا نه رو انجام دادم ) چون یک جایی خوندم که استفاده از get برای تغییرات داخل دیتا بیس توصیه نمیشه ! واسه همین پرسیدم

Unique
جمعه 11 اردیبهشت 1394, 15:21 عصر
GET و POST دو تکنیک ارسال اطلاعات از طریق صفحات وب هست و هیچ ربطی به امنیت ندارند ! Cookie ها هم به همین ترتیب.
اینکه شما چه اطلاعاتی را از طریق اون ها جابجا میکنید یا چه پردازشی روشون انجام میدین مهمه. مثلا اگه شما اطلاعات را به وسیله SSL یا خودتون Encrypt نکنین و با GET یا POST ارسال کنید خوب امکان دسترسی و دستکاری توی اونها وجود داره.

منظورتون را باید از امنیت واضح بنویسید. اونچه از صحبت شما بر میاد اینه که هر کسی نتونه از طریق مرکز کنترل شما رکورد شماره از جدولی که ID را با GET ارسال کردین ویرایش کنه.
اینجا اصلا مهم نیست شما شماره رکورد را با GET یا POST میفرستین. مهم اینه که شما بررسی کنید ببینین اون کسی که درخواست کرده حق تغییر را داره یاه نه ! مثلا شما برای ورود به مرکز کنترل باید از کاربران نام کاربری و کلمه عبور بگیرین و از طریق session یا cookie بتونین بررسی کنید طرف لاگین هست یا نه ! حالا اگه کسی لاگین نکرده باشه اصلا مهم نیست آدرس درستی را درخواست کرده باشه. قآئدتا در مرحله تعیین هوت کاربری با خطا مواجه میشه.

حتی میشه یک گام جلوتر رفت و تعیین کرد یک کاربر دسترسی تغییر چه جدول هایی را داره و باید در زمان درخواست ویرایش از طرف هر کسی بررسی کنید علاوه بر لاگین بودن آیا دسترسی تغییر اون جدول را داره یا نه.

این مباحث امنیتی تعیین اعتبار کاربر هست و اگه منظور دیگه ای دارین باید مطرح کنید.

پ.ن : خدایی کی این چرندیات امنیتی در مورد GET و POST را آموزش میده !؟ این آدم ها باید شناخته بشن و از سیستم آموزشی وب کنار گذاشته بشن.

m.esmaeilzadeh
شنبه 12 اردیبهشت 1394, 17:31 عصر
ممنون - ببینین من یک صفحه مدیریت دارم که مدیر میاد پرداخت ها رو تایید میکنه حالا کاربر میتونه خودش بیاد و ادرس اون صفحه رو بزنه و id مورد نظر خودش رو بزنه و اون پرداخت تایید بشه - (البته چک کردن این که طرف مدیر هست یا نه رو انجام دادم ) چون یک جایی خوندم که استفاده از get برای تغییرات داخل دیتا بیس توصیه نمیشه ! واسه همین پرسیدم

اون مقاله که خوندید احتمالا درباره sql injection صحبت کرده که با روش هایی میشه جلوگیری کرد !
ولی کلا در بحث امنیت میان از بالا رولها رو چک میکنن و بعد بقیه کارها و کدها اجرا میشه ...
اگر در بالاترین بخش کد لاگین کردن مدیر رو بررسی کنید دیگه بقیه کدها قرار نیست به دیتابیس و امنیت کارت صدمه بزنه !!!