💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ علی حبیبی
تکنیک درست پاک کردن دیتا
جامعه پی اچ پی ایجاد شده در ۲۷ فروردین ۱۳۹۹

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

سلام

عملیاتی مثل حذف و بروزرسانی که جزء عملیات حساسی هستند باید حتما با متدهای POST انجام بشوند و حتی باید از CSRT TOKEN‌ها هم باید استفاده بشود ( توضیحی درباره CSRF و حملات ناشی از آن ) ، حتی در فریم ورک مثل لاراول شما برای حذف یک چیزی از دیتابیس باید از متد DELETE استفاده کنید یا برای بروزرسانی کردن باید از متد PUT یا PATCH استفاده کنید.

امیر صالحی ۲۸ فروردین ۱۳۹۹، ۰۳:۵۹

سلام.

اول تفاوت‌های GET و POST رو یک نگاهی بندازید.

در مورد سناریوی delete هم که گفتید، از هر دو روش میشه استفاده کرد ولی بهتر هست بصورت post انجام بشه.

چون در متد get آدرس‌ها قابل ایندکس شدن و کش شدن و بوکمارک شدن و حتی کپی کردن و انتقال اونها وجود داره.

قاعدتاً تمام عملیات هایی چون create و update و delete باید مجوزی وجود داشته باشه واسه کاربر.

پس اینکه بگیم ربات‌ها میتونن روی delete کلیک کنن، اینجوری نیست، اگر مجوز delete وجود داشته باشه، برای ربات فرقی نمیکنه متد درخواستی، get باشه یا post چون توسط ربات میشه request ای با متد post ارسال کرد.

در مورد get بالاتر مثال زدم که امکان کپی کردن لینک delete وجود داره و همونطور دوستمون گفتن احتمال حمله csrf ممکنه بوجود بیاد.

برای مثال من مجوز delete رو دارم، کاربری email ای واسم ارسال میکنه و میگه روی لینکی کلیک کنم و من ناخواسته روی لینکی کلیک میکنم که مربوط به delete روی سایت هست و چون در سایت login هستم و مجوز delete هم دارم این اتفاق میوفته.

پس در حالت کلی، هم ریکوئست get قابل ارسال هست، هم ریکوئست بصورت post.

اولین چیزی که برای این عملیات مهم هست، مجوز و دسترسی این عملیات هست که برای کاربری وجود داره یا نه.

در ضمن ریکوئست‌های post هم قابل تغییر و قابل دسترسی هستن(HTTP Parameter Pollution)، کافیه به هدر ارسالی توسط مروگر نگاه بندازید.

 

* نکته آخر: اگر محتوای درخواست‌ها و پاسخ ها برای سایت شما اهمیت داره باید از ssl روی سایت استفاده کرد تا از زمان request تا response، همه چیز کدگذاری و قفل بشه و اگر داده ای دزدیده هم شد، قابل دسترسی و دستکاری نباشه.

 

محسن موحد ۲۸ فروردین ۱۳۹۹، ۱۹:۰۰