سلام دوستان برای از بین بردن Html injection تو فرم ثبت نام چیکار باید کرد ؟
اکه کاربری تگ html یا js نوشت نمیخام ثبت نام شه یا ندید گرفته شه و به همراه تگ ثبت نام نشه
من به این شکل ثبت نام انجام دادم و اطلاعات تو دیتابیس ذخیره شد
شما اطلاعات کار بر رو بهش پاس میدین مثلا نام رو بعدش اون میاد تگ های html رو ازش ور میداره بعد میتونین اون رو در یک متغیر بریزین و ازش استفاده کنین
سلام می توانید از تابع htmlspecialchars استفاده کنید. مانند:
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // <a href='test'>Test</a>
این تابع html رو به یکسری special character ها تبدیل می کند و این کاراکتر ها توسط مرورگر اجرا نمی شوند.
اگر از لاراول استفاده می کند در بلید به این صورت استفاده کنید دیگر این خطا حل می شود.
{{ $value }}
بله از لاراول استفاده میکنم
کدوم قسمت باید از این مقدار استفاده کنم ؟ داخل input ها ؟
{{ $value }}
نه وقتی که دارید نمایش می دهید به این شکل :{{ $user->name }}
البته 99 درصد اوقات از این روش استفاده می شود ( فقط وقتی از نوع نمایش {!! !!} استفاده می کنیم که دارید از ادیتوری مثل ckeditor استفاده می کنیم).
موقع نمایش بله میدونم
فقط مشکلی وجود نداره کاربر به این شکل ثبت نام کنه ؟
نباید خطایی برای کاربر فرستاده شه؟
سلام
مشکل امنیتی پیش نمی آید اگر اینجوری ذخیره شود . مهم این است که موقع خواندن اطلاعات کد های html یا script ها خوانده نشود .
که دوستان راه حلش را فرمودند
به سختی میشه از ورود این اطلاعات به دیتابیس جلو گیری کرد مهم بی اثر کردن این نوع از حملات هست بعد ادمین وقتی می بینه یکسری کاراکتر بی معنی هست می فهمه کاربر الکی هست. بعد می تواند حذف کند یا یک ایمیل از طرف پشتیبانی به کاربر برای اعتبار سنجی ایمیل بفرستد.
@wxyz
@websaz
خیر دوست عزیز
ممکن است حملات xxs صورت بگیرد . و کاربر script های خطرناکی را بنویسد و به نوعی تزریق کد انجام دهد .
تنها راهش راهش هم استفاده از htmlspecialchars و مشابه آن است ...
@gomnam
وقتی در لاراول هیچ چیزی به جز یکسر کاراکتر مثل <a href='test'>Test</a>
نمایش داده می شه xss وجود ندارد.
لاراول از همه ی باگ ها بجز اشتباهات برنامه نویس ها جلو گیری می کنه . شما سعی کنید طبق مستندات لاراول جلو برید و سعی کنید تا حد امکان از خطای انسانی جلوگیری کنید.
@wxyz
دوست عزیز شما وقتی دیتا رو از کاربر میگیری اون رو داخل یک متغیر به نامه مثلا $data ریختی بعد این رو بریز تو تابع
strip-tags($data)
وقتی این کار رو کردی دوباره این ها رو بریز تو $data و این الان دیتای اورجینال هستش و این رو بریز تو دیتابیس
@behzadi این روش برای از بین بردن چند تگ html هست و امنیت کاملی ندارد. سایت راکت ( به دلیل استفاده از لاراول ) از همین سیستم استفاده می کند پس اگر من یک کد html اینجا وارد کنم به شکل متن در می اید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟