سلام
ممنون میشم یکی از دوستان و اگه خود مهندس موسوی وقت داشتند جواب بدند که خیلی برام مهمه
من سایت لاراول طراحی کردم که کاربر ثبت نام کنه از همون ثبت نام آماده خود لاراول استفاده کردم نسخه ۵.۶ و تو فرم ثبت نام چند تا فیلد هم مثل کد ملی رو هم گذاشتم که کاربر وارد کنه و نکته مهم اینجاست که تمام اعتبار سنجی ها رو هم سمت کلاینت هم سمت لارول ولیدیشن اجرا کردم ولی امروز یه چیز عجیب دیدم
دیدم یه کاربر که ip شم خارجی بود به احتمال زیاد ******** استفاده کرده بود ثبت شده و نه ایمیل وارد کرده و نه کدملی ۱۰ رقمی شو وارد کرده فقط یه نام وارد کرده واقعا برام هم جالب بود هم تعجب کردم ؟
باید چیکار کنم پس اعتبار سنجی سمت سرور چرا کار نکرد مثلا گفتم کد ملی ۱۰ رقمی وارد کن حتی باید مطابق فرمول واقعی باشه ولی طرف این و وارد کرده ۰۰۰ خودمم چندین بار تست کردم ولی همه چی درست هست و اعتبار سنجی ها همشون کار میکنه ولی نمیدونم اون کاربر چطوری تونسته سیستم ثبت نام و دور بزنه.
ممنون میشم کمکم کنید
من یه بار همچین تجربه ای داشتم که بعد فهمیدم هک شدم. البته سایتم وردپرس بود ولی دیدم یه دفعه طرف اومده چند تا اکانت ساخته با اطلاعاتی که من هیچ جوره سمت کلاینت اجازه اعتبار سنجیشو نداده بودم. خلاصه پدرم دراومد تا اون هکو secure کردم.
الان ولی به نظرم بهترین راه اینه که اول سمت کاربر اعتبار سنجی کنی که با javascript خطا بده.
بعد یه اعتبار سنجی هم سمت سرور کنی که اگر اونجا خطا داد یعنی داره خارج از browser و با curl و ابزارهای هک درخواست میفرسته که باید درجا درخواست و ip طرف بلاک بشه.
در رابطه با سایت خودت نظرم اینه که حتما اعتبار سنجیه سمت سرورت مشکل داره که تونسته دور بزنه.
شایدم یه جا باگ sql injection داری که داره inject میکنه که این مورد تو لاراول خیلی بعیده مگه این که از raw statement ها استفاده کرده باشی.
@pichanakian سلام دلیل این موضوع دو مورد میتونه باشه
دوستان ممنون از نظرهاتون
گفتم از سیستم آماده احراز هویت و ثبت نام خود لاراول استفاده کردم و همه اعتبارسنجی هارو انجام دادم چه سمت کلاینت چه سرور خودم بارها تست کردم چون توکن داریم نمیشه درخواست جعل ارسال بشه با curl هم تست کردم چیزی ثبت نشد تو دیتابیس همه مواردی که فرمودین و قبلا تست کردم و چون به نتیجه نرسیدم اینجا مطرح کردم.
@pichanakian پس یه مشکل امنیتی در سایتتون وجود داره که نفوذگر تونسته به سایتتون داده های دلخواه رو با وجود اعتبار سنجی و احراز هویت ارسال کنه با توکن فقط جلویه Cross site request forgery رو میگیره حداقل 5 الی 6 اسیب پذیری امنیتی دیگه میتونه باعث ایجاد کاربر جدید بشن
در صورت امکان سایتتون رو اف کنید تا مشکل رو پیدا کنید
در صورتی که خودتون با اسیب پذیری اشنایی دارید خودتون دنبال مشکل بگرید
در صورت عدم اشنایی با یک متخصص امنیت مشورت کنید
و توصیه اخر حتی با انجام تمام امن سازی ها سایتتون رو پشت محیط های کلود قرار بدید این جلویه هکر های حرفه ای رو نمیگیره اما جلویه افرادی رو که دانش خاصی برخوردار نیستن و قصد دارن با چند تا ابزار اماده سعی به نفوذ کنن که امضا های دیجیتال بیشتر اون ابزار ها توسط فایروال های کلود ثبت شده رو میگیره
برای اعتبار سنجی شماره ملی از rule مربوط به regex استفاده کنید . بدونه هیچ استثنایی باید بر اساس پترن regex اطلاعات قرار بگیره و از این داستانها نخواهید داشت
دقیقا اعتبارسنجی کد ملی از پترن regex استفاده شده که به هیچوجه جز کد ملی واقعی رو قبول نمیکنه به هر حال ممنون از نظرات تون ولی من چیزی از خودم ننوشتم همون Auth پیشفرض و فرم Register خود لاراول و استفاده کردم و اصلا بحث کد ملی نیست کاربر تونسته بدون ایمیل هم ثبت کنه !!!!!!! من که دیگه سیستم اعتبارسنجی پیش فرض لاراول و دستکاری نکردم که...
فقط یه فیلد کد ملی اضافه کردم حتی ریکپچل گوگل هم داره فرم.
سلام
برای من هم یکی دوبار پیش امده بود ، الان هم هست (هم سمت سرور چک میکنم هم سمت کاربر)
عجیبه!! فکر میکردم فقط واس منه این اتفاق!
اومدم فیلدهای مهم رو nullable() هم قرار دادم. ولی باز این مشکل هست!
@pichanakian
سلام
وقتی کد ملی فقط باید 10 رقم باشه باید نوع داده توی دیتابیس CHAR 10 باشه.
یا فیلدی مثل ایمیل باید حتما یونیک باشه که کسی نتونه مقدار تکراری ثبت کنه
اینطوری اگر کسی هم منطق برنامه نویسی و اعتبار سنجی شما رو دور بزنه برای ثبت اطلاعات در سطح پایگاه داده با خطا رو به رو میشه و نمیتونه اطلاعات فیک رو ثبت کنه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟