گذاشتن آی دی کاربر در فرم

پرسیده شده
فعالیت 902 روز پیش
دیده شده 525 بار
0

سلام , اینکه شما برای گرفتن user_id در request validation , آی دی کاربر در فرم می زارید (چه به صورت Input hidden) مشکل امنیتی  (یا حداقل برای هکر سرنخ) بوجود نمیاره ؟

هر چند متوجه هستم که در روت هامون آی دی کاربر رو قرار دادیم , ولی اینکه آی دی خود کاربر رو در فرم بزاریم به نظرم کار درستی نمیاد.

 

فایل پیوست

Faraz salehi
Faraz salehi

12 آبان 00

1
حذف شده

سلام.

از لحاظ امنیتی هیچ مشکلی نداره. چون آیدی کاربر فیلد امنیتی و مهمی نیست برای مخفی سازی.

شما چطور آیدی کاربرو بصورت GET میفرستید؟

داخل URL ارسال میکنید همونطور هم که گفتید در Route قرار دادینش.

حالا اگر بخواید فرمی رو بصورت GET ارسال کنید چه میکنید؟

همچنین بصورت POST؟

گذاشتن hidden tag هیچ خللی در امنیت ایجاد نمیکند و تفاوتی با گذاشتن پارامتر در URL ندارد و روشیست که تمام برنامه نویس ها ازون بهره میبرند. برای مثال چیزی که در تمامی فرم ها میبینیم حتی در فریمورک ها، فیلد csrf_token بصورت hidden هست.

پس نگران این مشئله نباشید.

برای امنیت سایت باید مبحث authorization رو در برنامه تون پیاده کنید.

فایل پیوست

محسن موحد

توسط

محسن موحد

13 آبان 00

حذف شده
آره , authorization باید پیاده سازی بشه که البته می دونم تو این دوره جاش نیست. اما با تغییر مقدار input form name=user_id احتمال ویرایش یا حذف بقیه کاربران (تو این پروژه) هست.
Faraz salehi

13 آبان 00

حذف شده
اصلا شما نباید حذف کاربرانو بدست یوزر بدید که. دوما در پروژه های بزرگ هیچ وقت حذف فیزیکی مخصوصا روی یوزر ها ندارن. یه فیلدی درست میکنن مثلا به اسم confirmed که با دلیت مقدارش 0 میشه و کاربر نمایش داده نمیشه
محسن موحد

13 آبان 00

حذف شده
چرا authorization جاش این دوره نباشه؟ متخصص PHP باید رول و نقش هم پیاده کنه واسه کاربرانش
محسن موحد

13 آبان 00

حذف شده
بعد حالا گیریم ما حذف رو گذاشتیم و دادیم دست ادمین، حالا ادمین اگر این مقدارو عوض کنه ممکنه یک یوزر دیگه یا یک پست دیگه حذف بشه، درسته؟ خب بله حذف میشه.چه اشکالی داره؟بالاخره باید یه راهی واسه حذف وجود داشته باشه، وقتی ادمین آگاهانه داره مقدار id رو تغییر میده، پس خودش داره عملا میگه کدوم یوزر یا پست دلیت بشه
محسن موحد

13 آبان 00

حذف شده
مثلا توو همین نمایش پست ها هم داریم، شما آیدی پستو که عوض میکنید، پست هم تغییر میکنه
محسن موحد

13 آبان 00

حذف شده
دقیقا درست می گید , همه این مشکلات از پیاده سازی نکردن authorization سرچشمه می گیره , چون تو جلسات اول سناریوی پروژه تعریف شده و در واقع پروژه متوسط-کوچیکی هست , می گم جاش نیست. (علاوه تمرکز این دوره بیشتر بر روی تعامل برنامه نویس و تیم هست. )
Faraz salehi

13 آبان 00

حذف شده
هر چند این مبحث رو آقای سامی مفصل در آموزششون توضیح دادن , تا اینجا که من می بینم این پروژه برای تمرین خوبه اما محیط production ی اشکالاتی داره. لینک آموزش اقای سامی : https://7learn.ac/chapter-laravel-permissions گذاشتن فیلد confirmed مثال خیلی خوبی بود برای دنیای واقعی زدید , نمی دونم شما به ویدیوی این پروژه دسترسی دارید یا نه .. اما اینجا ( تو همین جلسه ) آقای صالحی ( امیر ) عملا کاربران رو پاک می کنه.
Faraz salehi

13 آبان 00

حذف شده
این موارد نیاز به تجربه هم داره، یعنی هر چه بیشتر پروژه بزنیم با ساختار های جدیدی اشنا میشیم. در بعضی ساختارها میتونیم هم confimed داشته باشیم هم فیلد published...
محسن موحد

14 آبان 00

حذف شده
فیلد confirmed مشخص میکنه که تایید شده یا نه و فیلد published برای انتشار... پیشنهاد میکنم هر وقت تایم ازاد داشتید دیتابیس cms های دیگه رو ببینید چه فیلدهایی دارن مخصوصا پروژه های شبکه مجازی. موفق باشید.
محسن موحد

14 آبان 00

حذف شده
شبکه اجتماعی*
محسن موحد

14 آبان 00

حذف شده
آره , حتما این کار رو می کنم
Faraz salehi

14 آبان 00

1
حذف شده

مثلا توو همین نمایش پست ها هم داریم، شما آیدی پستو که عوض میکنید، پست هم تغییر میکنه.

حالا اگه شما میخواهید با یک آیدی عوض کردن ساده این اتفاق نیوفته، میتونید یک فیلد دیگر هم داخل دیتابیس اضافه کنید، مثل slug و به این فیلد در fetch کردن مربوطش کنید.

یا اصلا حرفه ای تر هم میتونیم نگاه کنیم، اصلا آیدی ندیم و فقط از slug استفاده کنیم.

الان آدرس url همین پست آکادمی رو ببینید:

https://7learn.ac/community/گذاشتن-آی-دی-کاربر-در-فرم-RvYJL

آیدی وجود نداره و بر اساس slug داده fetch میشه. و آخر url هم چنتا کاراکتر بصورت رندوم اضافه شده تا slug ها برابر نشن. یعنی دو پست یک slug نداشته باشن.(چون در این سایت slug هر پست رو از روی title سؤال دارن میسازن)

البته باز هم کاربر میتونه کپی کنه ولی دیگه مثل آیدی نیست که یک عدد جابجا کنه و آیدی رو بالا پایین کنه.

فایل پیوست

محسن موحد

توسط

محسن موحد

13 آبان 00

حذف شده
من شخصا این مثالی ( یا solution ) رو شما زدید رو بیشتر می پسندم .. مرسی از وقتت و مثال خوبت _\/_
Faraz salehi

13 آبان 00

جلسه پیاده سازی امکان حذف و آپدیت کاربر