یک برنامه نویس و تحلیل گر نرم افزارها - مدیر و موسس سپهر گستر و شرکت وبینه
هک سایت لاراولی
هک سایت چیزی است که همه از آن نگرانیم. سالها تلاش و زحمت شما با یک بی توجهی میتواند به باد برود در این مقاله به برخی تجاربی که طی سالهای اخیر داشته ام اشاره میکنم.
هک فایل .env در لاراول
مهم ترین روش های هک روش های است که توسط مشکلات برنامه نویسی از طرف کاربر رخ میدهد به طور مثال با عدم فعال سازی وضعیت production میتواند با دیدن کدهای خطا به نوعی وارد فایل config شد به طور مثال دیده شده که اگر از لاراول استفاده میکنید حتما حتما در بخش فایل .env وضعیت APP_ENV=production و APP_DEBUG=false قرار دهید یا حداقل این خطا را به طور کامل پاک کنید این موضوع باعث میشود هنگامی که برنامه خطای ۵۰۰ میدهد هکر می تواند وارد فایل .env شما شده و با دسترسی به اطلاعات دیتابیس به سادگی وارد mysql شود و کلیه اطلاعات شما را از بین ببرد.
روش اجرای کدهای مخرب با واسطه عدم استفاده از دوبل آکولاد {{}}
روش بعدی که میتواند توسط ارسال کدهای مخرب js انجام شود و در نهایت بتواند کوکی های لاگین مدیر را بخواند و خودش هم بتواند وارد شود اجرا شدن کدهای js سمت کاربر است. مثلا با اجرای تکه کدی مخرب در یکی از فرم های ورودی مانند تماس با ما در بخش محتوا پیام و باز کردن آن توسط ادمین در صورتی که در سمت ادمین یا کلا همه بخش های سایت از دوبل آکولاد {{content}} استفاده شود این نکته ساده میتواند جلو اجرای کدهای js را که بگیرد و کد هم مانند یک متن ساده دیده میشود نه یک کد قابل اجرا. حال اگر از {!! content!!} یا echo content استفاده شود دقیقا کدهای js قابل اجرا هستند.
عدم استفاده دقیق از middlware های کنترلی در route ها
یک عقیده را همیشه مدنظر داشته باشید که به ورودی های کاربر اعتماد نکنید اگر شما یک صفحه ویرایش دارید یا یک صفحه نمایش فاکتور اصولا کاربر با یک url که شامل متغییر است مثلا شماره فاکتور وارد صفحه نمایش فاکتور میشود خب اگر کاربر عدد فاکتور را تغییر دهد به سادگی میتواند به اطلاعات دیگران دسترسی داشته باشد. لذا لازم است که به طور کامل همه route ها را با middlware ها کنترل دقیق کرد.
یک نکته مهم برای افرایش امنیت دیتابیس
همیشه در محیط اجرایی دسترسی DELETE را از کاربر MYSQL بگیرید . شاید برای شما سوال ایجاد شود که با این کار ادمین چگونه میتواند یک رکورد را حذف کند. سوال مهم است و پاسخ آن این است که بهتر است بخش ادمین از بخش عمومی جدا شود آن هم در یک پروژه مستقل با این روش حتی شما میتوانید در یک ساب دامنه وارد ادمین شوید و دسترسی به ساب دامنه را در فایروال cload Falare یا آروان فقط روی IP ثابت شرکت یا اینترنت خودتان تعیین کنید. همین نکته جلو بسیاری از مشکلات رایج هک دیتابیس و از بین رفتن داده ها را میگیرد. چون دیتابیس زمانی هک میشود که هر دسترسی به آن را پیدا کند والا خود Mysql به خودی خود هک نمیشود و بسیار امن است. پس با حذف دسترسی نمونه کدهای زیر جهت مثال
$ sudo mysql --password
mysql> revoke all on db_example.* from 'laraveluser'@'%';
mysql> grant select, insert, update on db_example.* to 'laraveluser'@'%';
در دستور بالا ما ابتدا به دیتابیس mysql وارد شدیم سپس همه سطح دسترسی ها را از laraveluser گرفتیم و بعد فقط دسترسی های select, insert, update را به کاربر laraveluser دادیم. در واقع این دستور برای بخش عمومی سایت است و اگر هم هکر وارد دیتابیس شود نمیتواند هیچ داده ای را حذف کند. البته در سایت های فروشگاهی قابلیت حذف برای کاربران وجود دارد که باید از تکنیک Soft Delete استفاده کنید.
هک به روش های سنتی
متاسفانه همچنان بسیاری از برنامه نویسان به اصول ورود متغییر به دستورات sql توجه ندارند و باید بدانند که هکر با ورود برخی از کدهای مخرب در یک فرم تماس با ما یا یک فرم نمایش اطلاعات میتواند کل دیتابیس را خالی کند.
- sql injection
- burt force
- man in middle
- non-ssl
- low secure password
اجرای اصولی و صحیح یک وبسایت یا فروشگاه اینترنتی یا پلتفرم که با Laravel ساخته شده میتواند سخت به نظر برسد و برای اجرای اصولی و دقیق آنها نیاز به تیم حرفه ای می باشد که تیم وبینه یکی از آنهاست. وبینه از سال 1390 فعالیت خودش را آغاز کرده و طی این سالها تجارب متعددی را در خصوص امنیت و توسعه و بهینه سازی را بدست آورده است و خوشبختانه با ساخت CMS سپهر گستر محصول نرم افزاری مبتنی بر لاراول را برای انواع سایت های بزرگ طراحی و توسعه داده .
مطلبی دیگر از این انتشارات
1000% افزایش سرعت لاراول با OCTANE و رقابت با nodejs
مطلبی دیگر از این انتشارات
بهترین سایت های ایرانی از نظر طراحی
مطلبی دیگر از این انتشارات
cms فروشگاهی