سلام , اینکه شما برای گرفتن user_id در request validation , آی دی کاربر در فرم می زارید (چه به صورت Input hidden) مشکل امنیتی (یا حداقل برای هکر سرنخ) بوجود نمیاره ؟
هر چند متوجه هستم که در روت هامون آی دی کاربر رو قرار دادیم , ولی اینکه آی دی خود کاربر رو در فرم بزاریم به نظرم کار درستی نمیاد.
سلام.
از لحاظ امنیتی هیچ مشکلی نداره. چون آیدی کاربر فیلد امنیتی و مهمی نیست برای مخفی سازی.
شما چطور آیدی کاربرو بصورت GET میفرستید؟
داخل URL ارسال میکنید همونطور هم که گفتید در Route قرار دادینش.
حالا اگر بخواید فرمی رو بصورت GET ارسال کنید چه میکنید؟
همچنین بصورت POST؟
گذاشتن hidden tag هیچ خللی در امنیت ایجاد نمیکند و تفاوتی با گذاشتن پارامتر در URL ندارد و روشیست که تمام برنامه نویس ها ازون بهره میبرند. برای مثال چیزی که در تمامی فرم ها میبینیم حتی در فریمورک ها، فیلد csrf_token بصورت hidden هست.
پس نگران این مشئله نباشید.
برای امنیت سایت باید مبحث authorization رو در برنامه تون پیاده کنید.
مثلا توو همین نمایش پست ها هم داریم، شما آیدی پستو که عوض میکنید، پست هم تغییر میکنه.
حالا اگه شما میخواهید با یک آیدی عوض کردن ساده این اتفاق نیوفته، میتونید یک فیلد دیگر هم داخل دیتابیس اضافه کنید، مثل slug و به این فیلد در fetch کردن مربوطش کنید.
یا اصلا حرفه ای تر هم میتونیم نگاه کنیم، اصلا آیدی ندیم و فقط از slug استفاده کنیم.
الان آدرس url همین پست آکادمی رو ببینید:
https://7learn.ac/community/گذاشتن-آی-دی-کاربر-در-فرم-RvYJL
آیدی وجود نداره و بر اساس slug داده fetch میشه. و آخر url هم چنتا کاراکتر بصورت رندوم اضافه شده تا slug ها برابر نشن. یعنی دو پست یک slug نداشته باشن.(چون در این سایت slug هر پست رو از روی title سؤال دارن میسازن)
البته باز هم کاربر میتونه کپی کنه ولی دیگه مثل آیدی نیست که یک عدد جابجا کنه و آیدی رو بالا پایین کنه.