استفاده از دیتا اتریبیوت ها و مشکلات امنیتی

- 3 هفته پیش
توسط Alimotreb آپدیت شد
Daee Hamid ( 215 تجربه )
3 هفته پیش

سلام
توی یه قسمت از پنل ادمین سایتم (لاراول) من یه سری باتن دارم که با کلیک روی هرکدوم یه سری اتفاقات می افته
باتن هایی مثل حدف و فعال و غیر فعال کردن آیتم ها
برای اینکه متوجه بشم کاربر روی کدوم باتن کلیک کرده یه سری data-attribute براش مشخص کردم و با ajax میگیرم و ارسال میکنم برای اون روت مربوطه
به اینصورت که مثلا اگر قراره آیتم های انتخاب شده یوزر رو حذف کنه این موارد تعریف شده:
Data-type="delete" data-view="App\User"
همه چیز اکیه و کاملا کار میکنه ولی مشکل اینجاس که اگر کاربر به صورت دستی توی این data-attr ها تغییراتی ایجاد کنه خرابکاری ب وجود میاد
خواستم ببینم راه حل جایگزینی نیست که این مشکلات ب وجود نیاد یا مثلا میشه ی جوری جلوی انجام تغییرات از سمت کاربر رو گرفت ؟!

Alimotreb ( 41942 تجربه )
3 هفته پیش

سلام
@daeehamid

از آیدی استفاده کنید
که اونم میهش به فرض تغییر داد
این کار ها که در فرانت انجام میدن خب طبیعی هست میشه تغییر داد
ولی بهترین کار
استفاده از باتن ها در فرم های مخصوص خودش هست
یه فرم درست کنید با متد و اکشن مشخص
داخلش باتن بزارید با نام مشخص!
توکن های CSRF فرم در لاراول هم دارید

این کار رو کنید و ایجکس رو روش پیاده سازی کنید
جدای از این ها هم اعتبار سنجی در سمت بک آند رو داشته باشید
اینطوری تغییر هم بده کار نمیتونه کنه! :-)

Daee Hamid ( 215 تجربه )
3 هفته پیش

سلام
@Alimotreb
خب به صورت فرم هم باشه باز میتونه تغییرات بده
همون data-attr ها رو باید به صورت input قرار بدم و hidden کنم دیگ درسته !؟
اون رو هم کاربر میتونه تغییر بده و مشکل ساز میشه

Alimotreb ( 41942 تجربه )
3 هفته پیش

سلام مجدد
@daeehamid


 <form action="{{ route('video.destroy',$video->id) }}" method="post" id="pakidan">
                                                                                {{csrf_field()}}
                                                                                <input type="hidden" name="_method" value="DELETE">
                                                                                <button type="submit"
                                                                                        class="btn btn-sm btn-outline-success ajax_delete">حذف
                                                                                </button>
                                                                            </form>

اینم نمونه کد ارسال درخواست که میتونید به جاش ایجکس بزنید من با swal زدم

 $(".ajax_delete").on("click", function validateForm(event) {
      event.preventDefault(); // prevent form submit
      var form = $('#pakidan'); // storing the form
      swal({
             title: "آیا از پاک کردن ویدئو مطنئن هستید",
             text: "این ویدئو اگر حذف شود دیگر قابل بازگردانی نیست!",
             icon: "warning",
             buttons: true,
             dangerMode: true,
           })
          .then((willDelete) => {
               if (willDelete) {

                     form.submit();
               } else {
                      swal("فایل شما پاک نشد!");
           }
        });
});

من به این طریق استفاده میکنم به فرض یه اقدام رو در لاراول برای پاک کردن

از طرف بک اند هم ولیدیشن داره
برای همین دستکار ینمیشه کرد ، چون متد هاو همه چی مشخصه!

Daee Hamid ( 215 تجربه )
3 هفته پیش

@Alimotreb
درسته
ولی من یه سری دیتا دیگه هم میخوام بفرستم غیر از id
الان شما هم از hidden استفاده کردی، اینو کاربر میتونه توی inspcet تغییر بده و ارسال کنه

الان توی همین صفحه سایت راکت، قسمت لایک کامنت همین کاری رو کرده ک من میخوام ، ولی نمیدونم چطوری انجامش داده
روی لایک کلیک میشه و آی دی و subject ارسال میشه در صورتی که مثل من توی کد html به صورت data-attr وارد نکرده و حتی فرم هم نیست

@hesammousavi
از چه روشی استفاده کردین برای این کار ؟!

Alimotreb ( 41942 تجربه )
3 هفته پیش

سلام مجدد
@daeehamid

اینکه شما میخوایید چندین پارامتر دیگه رو هم بفرستید ، خب بفرستید در قالب آرایه ، مشکلی نداره که!
از اون ور هم توی کنترلر دسترسی دارید!

اون فیلد هیدنی که میگید

{{csrf_field()}}

این رو باید در فرمی که در blade لاراول هست بزنید ، خودکار خودش میاد و میسازه!

برای ارسال پاسخ باید وارد سایت شوید