امنیت ۱۴۰۵/۰۵/۱۵ 8 دقیقه مطالعه 13 بازدید

چک‌لیست امنیت Laravel برای سامانه سازمانی

امنیت بعد از هک گران‌تر است. این چک‌لیست حداقلی است که قبل از تحویل سامانه‌های KGSM اجرا می‌شود.

✍️ نویسنده تیم KGSM
🔁 اشتراک‌گذاری
چک‌لیست امنیت Laravel برای سامانه سازمانی

چکیده مقاله

امنیت بعد از هک گران‌تر است. این چک‌لیست حداقلی است که قبل از تحویل سامانه‌های KGSM اجرا می‌شود.

امنیت Laravel با افزونه شعاری تمام نمی‌شود. هویت، نقش، ورودی، فایل، اسرار استقرار و پشتیبان باید قبل از انتشار بسته شوند. این چک‌لیست حداقلی است که تیم KGSM روی سامانه‌های سازمانی با داده کاربر و سند مالی اجرا می‌کند — نه یک امتیاز بازاریابی بعد از هک.

این راهنما با عنوان «چک‌لیست امنیت Laravel برای سامانه سازمانی» از تجربه تحویل پروژه‌های KGSM نوشته شده: محدوده نسخه اول، انتشار مرحله‌ای، و پشتیبانی بعد از تحویل.

مخاطب، ریسک و روش KGSM

مسئول فناوری یا مدیر سامانه‌ای که Laravel سازمانی را قبل از انتشار باید از نظر امنیت ببندد

نفوذ بعد از تحویل یعنی نشت داده مالی، توقف عملیات و بازسازی گران‌تر از پیشگیری.

KGSM این چک‌لیست را قبل از تحویل سامانه‌های سازمانی اجرا می‌کند و پشتیبانی به‌روزرسانی را در قرارداد می‌گذارد.

هویت، نشست و نقش

ورود باید روی HTTPS باشد، کوکی نشست را HttpOnly و Secure بگذارید، و نام کاربری admin یا ایمیل قابل حدس مدیر را پیش‌فرض نکنید. احراز هویت دو مرحله‌ای برای نقش‌های مالی و ادمین کل ارزش عملی دارد، نه فقط برای ویترین. قفل حساب بعد از چند تلاش ناموفق و محدودیت نرخ روی /login جلوی آزمون کور را می‌گیرد. «همه ادمین» در سامانه سازمانی یعنی هر کارآموز می‌تواند خروجی حقوق بگیرد. نقش را با مجوز مشخص بسازید: مشاهده، ویرایش، حذف، تصدیر. در Laravel، mass assignment را با $fillable بسته نگه دارید و مسیرهای مدیریت را از حدس URL خارج کنید. KGSM قبل از تحویل یک کاربر با نقش حسابدار می‌سازد و سعی می‌کند به منوی حقوق برود؛ اگر برسد، مجوز هنوز باز است. جزئیات پیاده‌سازی بخشی از برنامه‌نویسی وب است نه کار بعد از انتشار.

debug را در تولید خاموش کنید؛ مسیر فایل نقشه نفوذ است. پنل با APP_DEBUG روشن بعد از یک خطای اعتبارسنجی مسیر کنترلر را به اینترنت نشان داد.

ورودی، CSRF، آپلود و XSS

هر فرم سازمانی باید CSRF داشته باشد؛ API توکن‌دار را جدا از فرم کوکی طراحی کنید تا اشتباه میکس پیش نیاید. اعتبارسنجی را در Form Request بگذارید، نه فقط در فرانت. خروجی را در Blade با escape پیش‌فرض نگه دارید و {!! !!} را فقط برای HTML کنترل‌شده مجاز کنید. آپلود فایل نوع و حجم را محدود کند، نام را تصادفی ذخیره کند، و اجرا را از پوشه عمومی بردارد؛ چسباندن ورودی به رشته خام در گزارش‌ساز سفارشی رایج‌ترین سوراخ داخلی است. محدودیت نرخ روی فرم تماس و بازیابی رمز، اسپم و تخلیه صندوق را کم می‌کند. اگر صفحه عمومی دارید، سئو فنی هم HTTPS و هدرهای امنیتی را جدی می‌گیرد؛ این دو پروژه جدا نیستند. KGSM در تست تحویل یک فایل غیرمجاز و یک رشته اسکریپت را به فرم‌ها می‌فرستد تا چک‌لیست روی کاغذ نماند.

کارآموز با نقش ادمین خروجی اکسل حقوق را دانلود کرد چون مجوز جدا نبود. نقش حسابدار را جدا از ادمین کل بسازید و با همان حساب تست کنید.

اسرار، استقرار و وابستگی

فایل .env هرگز در مخزن عمومی یا پوشه قابل دانلود نباشد. کلید اپ، رمز دیتابیس و توکن درگاه را در محیط تولید جدا از Staging نگه دارید. debug را در تولید خاموش کنید؛ صفحه خطا با مسیر فایل برای مهاجم نقشه است. به‌روزرسانی Laravel و بسته composer را برنامه ماهانه کنید، نه وقتی خبر نفوذ منتشر شد. وابستگی رهاشده را حذف کنید؛ صف و worker را با کاربر جدا اجرا کنید تا نشت یک جاب کل وب را نگیرد. اگر چند سرور دارید، همگام بودن APP_KEY را کنترل کنید وگرنه نشست و رمزنگاری فیلد می‌شکند. KGSM دسترسی SSH و پنل هاست را به نام کارفرما تحویل می‌دهد؛ اسرار روی اکانت شخصی برنامه‌نویس یعنی با رفتن نفر، قفل عملیاتی می‌شوید. مسیر پشتیبانی به‌روزرسانی را از تماس در قرارداد بخواهید.

آپلود را خارج از public اجراپذیر ذخیره کنید. آپلود تصویر، یک فایل PHP را در public گذاشت و سایت در یک شب از کار افتاد.

پشتیبان، لاگ و تمرین بازیابی

پشتیبان نگرفتن چون ماه اول آرام بود، کلاسیک‌ترین دلیل از دست رفتن سند مالی است. نسخه دیتابیس و فایل‌های پیوست باید زمان‌بندی داشته باشند، رمزگذاری شوند و حداقل یک نسخه خارج از سرور تولید بنشینند. بازیابی را روی Staging تمرین کنید؛ فایلی که باز نمی‌شود پشتیبان نیست. لاگ ورود ناموفق، تغییر نقش، تصدیر گزارش و حذف سند را نگه دارید تا اختلاف و نفوذ سند داشته باشند. تست نفوذ کامل همیشه لازم نیست؛ همین چک‌لیست با داده واقعی، بیشتر نفوذهای فرصت‌طلب را می‌بندد. اگر اتوماسیون داخلی هم روی همین اپ است، مرز اتوماسیون اداری را با نقش جدا کنید تا کارتابل منشی به خروجی حقوق نرسد. امنیت یک فاز جدا بعد از «زیبا شدن پنل» نیست؛ در هر دموی مرحله‌ای باید یکی از این بندها بسته شده باشد.

پشتیبان فقط روی همان دیسک بود؛ خرابی هارد هر دو را برد. به‌روزرسانی composer را در تقویم نگهداری ماهانه بگذارید.

پشتیبان بدون تمرین بازیابی فقط حس امنیت است. توکن درگاه در مخزن گیت شخصی برنامه‌نویس ماند و بعد از رفتن او لو رفت.

فرم بازیابی رمز بدون محدودیت، صندوق ایمیل را با درخواست‌های جعلی پر کرد. تغییر نقش و تصدیر گزارش را لاگ کنید.

.env و کلید درگاه را بین Staging و تولید یکی نگذارید. پنل با APP_DEBUG روشن بعد از یک خطای اعتبارسنجی مسیر کنترلر را به اینترنت نشان داد.

کارآموز با نقش ادمین خروجی اکسل حقوق را دانلود کرد چون مجوز جدا نبود. محدودیت نرخ را روی ورود و بازیابی رمز از روز اول فعال کنید.

چک‌لیست اجرا

  • debug را در تولید خاموش کنید؛ مسیر فایل نقشه نفوذ است.
  • نقش حسابدار را جدا از ادمین کل بسازید و با همان حساب تست کنید.
  • آپلود را خارج از public اجراپذیر ذخیره کنید.
  • به‌روزرسانی composer را در تقویم نگهداری ماهانه بگذارید.
  • پشتیبان بدون تمرین بازیابی فقط حس امنیت است.
  • تغییر نقش و تصدیر گزارش را لاگ کنید.
  • .env و کلید درگاه را بین Staging و تولید یکی نگذارید.
  • محدودیت نرخ را روی ورود و بازیابی رمز از روز اول فعال کنید.

سناریوی واقعی 1

پنل با APP_DEBUG روشن بعد از یک خطای اعتبارسنجی مسیر کنترلر را به اینترنت نشان داد.

debug را در تولید خاموش کنید؛ مسیر فایل نقشه نفوذ است.

سناریوی واقعی 2

کارآموز با نقش ادمین خروجی اکسل حقوق را دانلود کرد چون مجوز جدا نبود.

نقش حسابدار را جدا از ادمین کل بسازید و با همان حساب تست کنید.

سناریوی واقعی 3

آپلود تصویر، یک فایل PHP را در public گذاشت و سایت در یک شب از کار افتاد.

آپلود را خارج از public اجراپذیر ذخیره کنید.

سناریوی واقعی 4

پشتیبان فقط روی همان دیسک بود؛ خرابی هارد هر دو را برد.

به‌روزرسانی composer را در تقویم نگهداری ماهانه بگذارید.

سناریوی واقعی 5

توکن درگاه در مخزن گیت شخصی برنامه‌نویس ماند و بعد از رفتن او لو رفت.

پشتیبان بدون تمرین بازیابی فقط حس امنیت است.

سناریوی واقعی 6

فرم بازیابی رمز بدون محدودیت، صندوق ایمیل را با درخواست‌های جعلی پر کرد.

تغییر نقش و تصدیر گزارش را لاگ کنید.

صفحات مرتبط KGSM

ادامه را در KGSM و خدمات سئو و بهینه‌سازی، برنامه‌نویسی و توسعه نرم‌افزار ببینید. مقالات مرتبط: امنیت سایت برای کسب‌وکار ایرانی: حداقل‌های ضروری. برای برآورد محدوده نسخه اول از فرم تماس استفاده کنید.

وقتی این نکته به تیم زنده می‌رسد باید قانون اجرایی باشد نه اسلاید: debug را در تولید خاموش کنید؛ مسیر فایل نقشه نفوذ است. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.

وقتی این نکته به تیم زنده می‌رسد باید قانون اجرایی باشد نه اسلاید: نقش حسابدار را جدا از ادمین کل بسازید و با همان حساب تست کنید. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.

وقتی این نکته به تیم زنده می‌رسد باید قانون اجرایی باشد نه اسلاید: آپلود را خارج از public اجراپذیر ذخیره کنید. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.

وقتی این نکته به تیم زنده می‌رسد باید قانون اجرایی باشد نه اسلاید: به‌روزرسانی composer را در تقویم نگهداری ماهانه بگذارید. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.

وقتی این نکته به تیم زنده می‌رسد باید قانون اجرایی باشد نه اسلاید: پشتیبان بدون تمرین بازیابی فقط حس امنیت است. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.

وقتی این نکته به تیم زنده می‌رسد باید قانون اجرایی باشد نه اسلاید: تغییر نقش و تصدیر گزارش را لاگ کنید. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.

وقتی این نکته به تیم زنده می‌رسد باید قانون اجرایی باشد نه اسلاید: .env و کلید درگاه را بین Staging و تولید یکی نگذارید. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.

وقتی این نکته به تیم زنده می‌رسد باید قانون اجرایی باشد نه اسلاید: محدودیت نرخ را روی ورود و بازیابی رمز از روز اول فعال کنید. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.

وقتی این نکته به تیم زنده می‌رسد باید قانون اجرایی باشد نه اسلاید: پنل با APP_DEBUG روشن بعد از یک خطای اعتبارسنجی مسیر کنترلر را به اینترنت نشان داد. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.

سوالات متداول

حداقل امنیت Laravel قبل از انتشار چیست؟ +
HTTPS و کوکی امن، نقش جدا، CSRF و اعتبارسنجی، محدودیت آپلود، .env مخفی، debug خاموش، پشتیبان تست‌شده و لاگ اقدامات حساس.
آیا تست نفوذ لازم است؟ +
برای داده خیلی حساس مفید است. بیشتر سامانه‌ها با همین چک‌لیست و تست نقش واقعی قبل از تحویل KGSM پوشش اصلی را می‌گیرند.
به‌روزرسانی را چه کسی انجام می‌دهد؟ +
باید در قرارداد باشد. KGSM نگهداری ماهانه را جدا از ساخت نسخه اول قیمت می‌دهد تا خاموش نماند.
وردپرس در همین سرور باشد خطرناک است؟ +
اگر ادمین وردپرس ضعیف باشد، کل سرور در معرض است. مرز دسترسی و به‌روزرسانی افزونه را جدا ببندید.
بعد از نفوذ چه کنیم؟ +
دسترسی را قطع، لاگ را حفظ، رمزها را عوض و از پشتیبان سالم برگردید. پیشگیری ارزان‌تر است؛ برای بازبینی از [تماس](https://kgsm.ir/contact) محدوده را بفرستید.

کلمات کلیدی

#امنیت Laravel #امنیت سایت #CSRF #KGSM

مطالب پیشنهادی

مشاهده همه