چکیده مقاله
رمز ضعیف ادمین، افزونه قدیمی و فرم بدون محدودیت، سه راه رایج نفوذ هستند.
امنیت سایت کسبوکار ایرانی حداقل دارد: HTTPS، نقش غیر از همه ادمین، اعتبارسنجی فرم، محدودیت آپلود، پشتیبان زمانبندیشده و لاگ ورود ناموفق. وردپرس یعنی بهروزرسانی افزونه و نساختن کاربر admin. Laravel یعنی مخفیکردن env و بهروزرسانی فریمورک. تیم KGSM روی kgsm.ir این را در برنامهنویسی وب از اسپرینت اول میبندد. ظاهر در طراحی سایت جایگزین امنیت نیست. HTTPS در سئو هم غیرقابلمذاکره است. برای بازبینی از تماس نوع سایت را بفرستید.
این راهنما با عنوان «امنیت سایت برای کسبوکار ایرانی: حداقلهای ضروری» از تجربه تحویل پروژههای KGSM نوشته شده: محدوده نسخه اول، انتشار مرحلهای، و پشتیبانی بعد از تحویل.
مخاطب، ریسک و روش KGSM
صاحب کسبوکار ایرانی که سایت یا فروشگاه دارد و میخواهد حداقل امنیت را قبل از نفوذ ببندد نه بعد از باجافزار
رمز ضعیف، افزونه کهنه، فرم بدون محدودیت و پشتیبان تستنشده یعنی توقف فروش، نشت داده مشتری، و هزینه بازیابی چندبرابر ساخت.
KGSM امنیت را در توسعه وب از روز اول میگذارد: HTTPS، نقش، پشتیبان، و فرم محدود — نه بهعنوان افزونه بعد از هک.
HTTPS، نقش و رمز: حداقل ورود به سیستم
گواهی SSL را روی کل دامنه اجباری کنید و HTTP را ریدایرکت کنید. کوکی نشست باید Secure و HttpOnly باشد تا اسکریپت صفحه آن را ندزدد. کاربر admin یا رمز ۱۲۳۴ هنوز رایجترین راه ورود به پنلهای ایرانی است. نقش را از روز اول جدا کنید: ویرایشگر، مالی فقطمشاهده، ادمین محدود. ورود ناموفق را لاگ کنید و بعد از چند تلاش قفل موقت بگذارید. اگر پنل روی /admin قابل حدس است، مسیر را عوض کنید اما این را جایگزین رمز قوی نکنید. KGSM در برنامهنویسی وب این موارد را چکلیست تحویل میداند. احراز دو مرحلهای برای ادمین فروشگاه ارزشش را دارد. نشست را بعد از تغییر رمز باطل کنید. رمز را در گروه واتساپ نفرستید؛ مدیر رمز جدا دارد. اگر کارمند رفت، همان روز دسترسی را ببندید.
کاربر admin نسازید و رمز پیشفرض را همان روز عوض کنید. رمز ادمین در گروه چت بود و بعد از رفتن کارآموز صفحه اول عوض شد.
وردپرس و Laravel را جدا سخت کنید
روی وردپرس افزونه و قالب را از منبع شناخته بهروز کنید و افزونه متروک را حذف کنید. کاربر admin نسازید. ویرایش فایل از داخل پیشخوان را اگر لازم نیست ببندید. روی Laravel فایل env را از وب دور نگه دارید، debug را در تولید خاموش کنید، و بهروزرسانی فریمورک را در نگهداری بگذارید نه «وقتی وقت شد». آپلود را به نوع و حجم محدود کنید؛ آپلود php داخل پوشه تصاویر کلاسیک است. CSRF و اعتبارسنجی ورودی را دور نزنید برای سرعت دمو. KGSM اگر فروشگاه سفارشی است Laravel را با نقش و لاگ میسازد تا افزونه تصادفی سطح حمله را بزرگ نکند. قالب قشنگ در طراحی سایت اگر روی وردپرس کهنه سوار شود باز هم آسیبپذیر است. مخفیکردن نسخه نرمافزار کمک جزئی است؛ بهروزرسانی اصل کار است.
افزونه متروک فرم نفوذ داد؛ بهروزرسانی ماهانه در قرارداد نبود. HTTP را به HTTPS ریدایرکت کنید و mixed content را پاک کنید.
فرم، اسپم و سطح حمله عمومی
فرم تماس بدون محدودیت نرخ، ربات و حمله کور را دعوت میکند. محدودیت، کپچای سبک، و فیلد زمانپر برای انسان کافی است. پیام را در پنل یا ایمیل سازمانی نگه دارید نه اینباکس شخصی که با گوشی گم میشود. جستجوی سایت و ورود را هم محدود کنید. اگر درگاه پرداخت دارید، صفحه بازگشت را امضا کنید و مبلغ را از سرور بخوانید نه از فیلد مخفی مرورگر. KGSM این را در کشف فروشگاه مینویسد چون وصله بعد از تراکنش جعلی گران است. فایل پشتیبان را روی همان سرور عمومی نگذارید. فهرست دایرکتوری را خاموش کنید. هدرهای امنیتی پایه — جلوگیری از iframe ناخواسته و mixed content — را بعد از HTTPS بگذارید. سئو بدون HTTPS هم اعتماد کاربر را میشکند هم مرورگر را.
نقش مالی را فقطمشاهده بگذارید. فایل env روی وب مانده بود و کلید درگاه لو رفت.
پشتیبان، بازیابی و قرارداد نگهداری
پشتیبان بدون تست بازیابی یک فایل آرامبخش است نه طرح. هفتهای یکبار بازگردانی روی محیط تست را تمرین کنید. نسخه را خارج از سرور وب نگه دارید. بعد از نفوذ فقط پاک کردن فایل مشکوک کافی نیست؛ رمزها را عوض کنید، نشستها را باطل کنید، و تاریخچه دسترسی را ببینید. KGSM پنجره رفع باگ امنیتی و بهروزرسانی را در قرارداد میگذارد تا وعده شفاهی با رفتن نفر اول نمیرد. اگر بودجه نگهداری ندارید، همان را قبل از ساخت بگویید تا معماری سادهتر و افزونه کمتر انتخاب شود. دامنه، هاست و کنسول روی اکانت شرکت بماند. برای بازبینی امنیتی از تماس بگویید وردپرس است یا Laravel و آیا پرداخت دارید. گزارش نفوذ را با تاریخ و اقدام بنویسید. امنیت کامل نیست؛ حداقل قابل اداره است.
پشتیبان روی همان هاست بود و با باجافزار با سایت پاک شد. ورود ناموفق را لاگ کنید و قفل موقت بگذارید.
افزونه و فریمورک را در قرارداد نگهداری بهروز کنید. فرم بدون محدودیت هزاران ایمیل ساخت و سرور را پر کرد.
پیمانکار با FTP فایل php را در پوشه آپلود گذاشت. پشتیبان را خارج از سرور وب بگذارید و بازیابی را تست کنید.
فرم را با نرخ محدود و کپچای سبک ببندید. رمز ادمین در گروه چت بود و بعد از رفتن کارآموز صفحه اول عوض شد.
افزونه متروک فرم نفوذ داد؛ بهروزرسانی ماهانه در قرارداد نبود. دسترسی کارمند رفته را همان روز قطع کنید.
چکلیست اجرا
- کاربر admin نسازید و رمز پیشفرض را همان روز عوض کنید.
- HTTP را به HTTPS ریدایرکت کنید و mixed content را پاک کنید.
- نقش مالی را فقطمشاهده بگذارید.
- ورود ناموفق را لاگ کنید و قفل موقت بگذارید.
- افزونه و فریمورک را در قرارداد نگهداری بهروز کنید.
- پشتیبان را خارج از سرور وب بگذارید و بازیابی را تست کنید.
- فرم را با نرخ محدود و کپچای سبک ببندید.
- دسترسی کارمند رفته را همان روز قطع کنید.
سناریوی واقعی 1
رمز ادمین در گروه چت بود و بعد از رفتن کارآموز صفحه اول عوض شد.
کاربر admin نسازید و رمز پیشفرض را همان روز عوض کنید.
سناریوی واقعی 2
افزونه متروک فرم نفوذ داد؛ بهروزرسانی ماهانه در قرارداد نبود.
HTTP را به HTTPS ریدایرکت کنید و mixed content را پاک کنید.
سناریوی واقعی 3
فایل env روی وب مانده بود و کلید درگاه لو رفت.
نقش مالی را فقطمشاهده بگذارید.
سناریوی واقعی 4
پشتیبان روی همان هاست بود و با باجافزار با سایت پاک شد.
ورود ناموفق را لاگ کنید و قفل موقت بگذارید.
سناریوی واقعی 5
فرم بدون محدودیت هزاران ایمیل ساخت و سرور را پر کرد.
افزونه و فریمورک را در قرارداد نگهداری بهروز کنید.
سناریوی واقعی 6
پیمانکار با FTP فایل php را در پوشه آپلود گذاشت.
پشتیبان را خارج از سرور وب بگذارید و بازیابی را تست کنید.
صفحات مرتبط KGSM
ادامه را در KGSM و خدمات سئو و بهینهسازی، برنامهنویسی و توسعه نرمافزار ببینید. مقالات مرتبط: چکلیست امنیت Laravel برای سامانه سازمانی. برای برآورد محدوده نسخه اول از فرم تماس استفاده کنید.
وقتی این نکته به تیم زنده میرسد باید قانون اجرایی باشد نه اسلاید: کاربر admin نسازید و رمز پیشفرض را همان روز عوض کنید. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.
وقتی این نکته به تیم زنده میرسد باید قانون اجرایی باشد نه اسلاید: HTTP را به HTTPS ریدایرکت کنید و mixed content را پاک کنید. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.
وقتی این نکته به تیم زنده میرسد باید قانون اجرایی باشد نه اسلاید: نقش مالی را فقطمشاهده بگذارید. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.
وقتی این نکته به تیم زنده میرسد باید قانون اجرایی باشد نه اسلاید: ورود ناموفق را لاگ کنید و قفل موقت بگذارید. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.
وقتی این نکته به تیم زنده میرسد باید قانون اجرایی باشد نه اسلاید: افزونه و فریمورک را در قرارداد نگهداری بهروز کنید. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.
وقتی این نکته به تیم زنده میرسد باید قانون اجرایی باشد نه اسلاید: پشتیبان را خارج از سرور وب بگذارید و بازیابی را تست کنید. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.
وقتی این نکته به تیم زنده میرسد باید قانون اجرایی باشد نه اسلاید: فرم را با نرخ محدود و کپچای سبک ببندید. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.
وقتی این نکته به تیم زنده میرسد باید قانون اجرایی باشد نه اسلاید: دسترسی کارمند رفته را همان روز قطع کنید. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.
وقتی این نکته به تیم زنده میرسد باید قانون اجرایی باشد نه اسلاید: رمز ادمین در گروه چت بود و بعد از رفتن کارآموز صفحه اول عوض شد. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.
وقتی این نکته به تیم زنده میرسد باید قانون اجرایی باشد نه اسلاید: افزونه متروک فرم نفوذ داد؛ بهروزرسانی ماهانه در قرارداد نبود. برایش مالک و تاریخ بازبینی بگذارید تا در اولین هفته شلوغ فراموش نشود.
سوالات متداول
حداقل امنیت برای سایت شرکتی چیست؟ +
وردپرس برای کسبوکار ایرانی امن است؟ +
بعد از نفوذ چه کنیم؟ +
SSL همان امنیت کامل است؟ +
نگهداری امنیتی را KGSM انجام میدهد؟ +
کلمات کلیدی
خدمات مرتبط KGSM