راکت

از بین بردن Html injection در فرم ورودی

26 پاسخ

سلام دوستان برای از بین بردن Html injection تو فرم ثبت نام چیکار باید کرد ؟
اکه کاربری تگ html یا js نوشت نمیخام ثبت نام شه یا ندید گرفته شه و به همراه تگ ثبت نام نشه
من به این شکل ثبت نام انجام دادم و اطلاعات تو دیتابیس ذخیره شد
مشکل

ثبت پرسش جدید

پاسخ‌ها

26
amir
amir
@behzadi

تخصص: بک اند و فرانت اند

سلام از تابع زیر استفاده کنین تگ ها رو از بین میبره :

strip_tags()
Paradox
Paradox
@paradox

تخصص: در حال یادگیری

@behzadi
ممنون از شما
کدوم قسمت باید وارد کنم ؟

شاید پاسخ شما همین‌جا باشد

amir
amir
@behzadi

تخصص: بک اند و فرانت اند

جایی که دارید اطلاعات رو از کاربر میگیرید

amir
amir
@behzadi

تخصص: بک اند و فرانت اند

شما اطلاعات کار بر رو بهش پاس میدین مثلا نام رو بعدش اون میاد تگ های html رو ازش ور میداره بعد میتونین اون رو در یک متغیر بریزین و ازش استفاده کنین

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

سلام می توانید از تابع htmlspecialchars استفاده کنید. مانند:

$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;

این تابع html رو به یکسری special character ها تبدیل می کند و این کاراکتر ها توسط مرورگر اجرا نمی شوند.
اگر از لاراول استفاده می کند در بلید به این صورت استفاده کنید دیگر این خطا حل می شود.

{{  $value }}

@wxyz

Paradox
Paradox
@paradox

تخصص: در حال یادگیری

بله از لاراول استفاده میکنم
کدوم قسمت باید از این مقدار استفاده کنم ؟ داخل input ها ؟

{{ $value }}

@websaz

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

نه وقتی که دارید نمایش می دهید به این شکل :{{ $user->name }} البته 99 درصد اوقات از این روش استفاده می شود ( فقط وقتی از نوع نمایش {!! !!} استفاده می کنیم که دارید از ادیتوری مثل ckeditor استفاده می کنیم).

Paradox
Paradox
@paradox

تخصص: در حال یادگیری

موقع نمایش بله میدونم
فقط مشکلی وجود نداره کاربر به این شکل ثبت نام کنه ؟
نباید خطایی برای کاربر فرستاده شه؟

علیرضا کفایتی
علیرضا کفایتی
@alirezakefayati

تخصص: برنامه نویس laravel, vue.js

سلام
مشکل امنیتی پیش نمی آید اگر اینجوری ذخیره شود . مهم این است که موقع خواندن اطلاعات کد های html یا script ها خوانده نشود .
که دوستان راه حلش را فرمودند

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

به سختی میشه از ورود این اطلاعات به دیتابیس جلو گیری کرد مهم بی اثر کردن این نوع از حملات هست بعد ادمین وقتی می بینه یکسری کاراکتر بی معنی هست می فهمه کاربر الکی هست. بعد می تواند حذف کند یا یک ایمیل از طرف پشتیبانی به کاربر برای اعتبار سنجی ایمیل بفرستد.
@wxyz

علیرضا کفایتی
علیرضا کفایتی
@alirezakefayati

تخصص: برنامه نویس laravel, vue.js

@websaz
خیر دوست عزیز
ممکن است حملات xxs صورت بگیرد . و کاربر script های خطرناکی را بنویسد و به نوعی تزریق کد انجام دهد .
تنها راهش راهش هم استفاده از htmlspecialchars و مشابه آن است ...

amir
amir
@behzadi

تخصص: بک اند و فرانت اند

خب دوست عزیز اگه نمیخای این اطلاعات وارد دیتابیس بشن از همون تابع که گفتم استفاده کن!!!!

Paradox
Paradox
@paradox

تخصص: در حال یادگیری

چجوری میشه جلوی حملات xxs رو گرفت ؟
@gomnam

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

@gomnam
وقتی در لاراول هیچ چیزی به جز یکسر کاراکتر مثل &lt;a href='test'&gt;Test&lt;/a&gt; نمایش داده می شه xss وجود ندارد.

Paradox
Paradox
@paradox

تخصص: در حال یادگیری

@behzadi
توی لاراول کدوم قسمت باید اضافه کنم ؟
بلید یا کنترلر ؟

Paradox
Paradox
@paradox

تخصص: در حال یادگیری

@behzadi
توی لاراول کدوم قسمت باید اضافه کنم ؟
بلید یا کنترلر ؟

علیرضا کفایتی
علیرضا کفایتی
@alirezakefayati

تخصص: برنامه نویس laravel, vue.js

@websaz
بله در لاراول مشکلی پیش نمیاد ...

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

لاراول از همه ی باگ ها بجز اشتباهات برنامه نویس ها جلو گیری می کنه . شما سعی کنید طبق مستندات لاراول جلو برید و سعی کنید تا حد امکان از خطای انسانی جلوگیری کنید.
@wxyz

amir
amir
@behzadi

تخصص: بک اند و فرانت اند

دوست عزیز شما وقتی دیتا رو از کاربر میگیری اون رو داخل یک متغیر به نامه مثلا $data ریختی بعد این رو بریز تو تابع

strip-tags($data)

وقتی این کار رو کردی دوباره این ها رو بریز تو $data و این الان دیتای اورجینال هستش و این رو بریز تو دیتابیس

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

@behzadi این روش برای از بین بردن چند تگ html هست و امنیت کاملی ندارد. سایت راکت ( به دلیل استفاده از لاراول ) از همین سیستم استفاده می کند پس اگر من یک کد html اینجا وارد کنم به شکل متن در می اید.

صفحه 1 از 2

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام