چکلیست عملی امنیت سایت برای کسبوکارهای کوچک
HTTPS و هدرهای امنیتی درست شروع خوبی هستند، ولی فقط نحوهی صحبت مرورگر با سرور شما را پوشش میدهند. بیشتر رخنههای واقعی در سایتهای کسبوکارهای کوچک از جای دیگری میآیند: یک افزونهی قدیمی، یک رمز ضعیف برای پنل مدیریت، فرم تماسی که به هر چیزی که تایپ شود اعتماد میکند، یا بکاپی که وقتی لازم شد معلوم شد وجود ندارد. مهاجمها بهندرت سراغ یک سایت کوچک بهطور شخصی میآیند. آنها اسکنهای خودکار را روی هزاران سایت همزمان اجرا میکنند و هر سایتی را که ضعف شناختهشدهای دارد برمیدارند. این در واقع خبر امیدوارکنندهای است، چون یعنی عادتهای ساده و پیوسته، بیشتر تلاشها را خنثی میکنند.
این چکلیست همین عادتها را به ترتیبی مرور میکند که بیشترین بازده را با کمترین تلاش دارد. هیچکدام بودجهی زیادی نمیخواهد؛ کمی زمان راهاندازی و یک روال منظم لازم است.
۱. همهچیز را بهروز نگه دارید
نرمافزار قدیمی هنوز رایجترین راه هک شدن سایتهای کوچک است. وقتی یک آسیبپذیری منتشر میشود، ابزارهای خودکار ظرف چند ساعت شروع میکنند به جستوجوی سایتهایی که وصله نشدهاند. آنچه در معرض خطر است فقط سایت قابلدیدن نیست: سیستم مدیریت محتوا یا فریمورک، هر افزونه، قالب و بسته، و پشتهی سروری که زیرش است، مثل نسخهی PHP یا Node.
یک زمان ثابت ماهانه برای بهروزرسانی بگذارید و برای نرمافزارهایی که بیشتر به آنها وابستهاید اعلانهای امنیتی را دنبال کنید. قبل از یک بهروزرسانی مهم بکاپ تازه بگیرید، اگر میتوانید تغییر را اول روی یک نسخهی کپی اعمال کنید و بعدش صفحههای مهم را بررسی کنید. افزونهها و قالبهایی را که دیگر استفاده نمیکنید حذف کنید، چون کد بلااستفادهای که هیچوقت بهروز نمیشود فقط ریسک است و هیچ فایدهای ندارد.
۲. دسترسی مدیریتی را قفل کنید
پنل مدیریت و کنترلپنل هاست شما ارزشمندترین هدف روی کل سایت هستند، چون هر کس آنها را کنترل کند همهچیز را کنترل میکند.
برای هر حساب یک رمز یکتا و بلند استفاده کنید که با یک مدیر رمز ساخته و نگهداری شود. هرگز رمزی را از سرویس دیگر دوباره استفاده نکنید، چون اطلاعات ورودی لورفته از سایتهای نامرتبط بهصورت خودکار روی ورود مدیریتی امتحان میشود. هر جا تأیید دو مرحلهای ارائه میشود فعالش کنید، بهویژه روی حساب هاست، ثبتکنندهی دامنه و پنل مدیریت محتوا. به هر نفر حساب مخصوص خودش را با فقط دسترسیهای لازم بدهید و وقتی کسی میرود حسابش را ببندید. آدرسها و نامکاربریهای پیشفرض مدیریت را تا حد امکان تغییر یا محدود کنید، چون رباتها دنبال /wp-admin، admin و موارد مشابه میگردند. تعداد تلاشهای ناموفق ورود را محدود کنید تا حدس زدن رمز با آزمون و خطا عملاً غیرممکن شود.
۳. هر ورودی را غیرقابلاعتماد بدانید
هر فیلدی که بازدیدکننده بتواند در آن تایپ کند یک نقطهی ورود بالقوه است: فرمهای تماس، بخش نظرات، کادر جستجو و حتی پارامترهای آدرس. قاعده ساده و مطلق است. ورودی را روی سرور اعتبارسنجی کنید، نه فقط در مرورگر، و هرگز دادهی کاربر را مستقیم داخل یک کوئری پایگاه داده نگذارید یا بهصورت HTML خام نمایش ندهید.
بهجای ساختن کوئری با چسباندن رشتهها، از کوئری پارامتری یا ORMای استفاده کنید که بهصورت پیشفرض مقدارها را ایمن میکند. خروجی را ایمنسازی کنید تا نظری که شامل تگ اسکریپت است بهجای اجرا شدن، بهصورت متن نمایش داده شود. اگر بازدیدکنندهها میتوانند فایل بارگذاری کنند، نوع و حجم مجاز را محدود کنید، نام فایلها را عوض کنید و آنها را جایی نگه دارید که بهعنوان کد قابل اجرا نباشند. به فرمها محدودیت تعداد درخواست و یک مرحلهی محافظت در برابر اسپم اضافه کنید؛ هم صندوق ایمیل شما و هم سرورتان از سیل درخواستها در امان میمانند.
۴. کلیدهای محرمانه و تنظیمات را محافظت کنید
کلیدهای API، رمز پایگاه داده و اطلاعات ورود ایمیل هرگز نباید در کد عمومی یا مخزن شما دیده شوند. آنها را در متغیرهای محیطی یا یک مخزن رازها بیرون از پوشهی عمومی وب نگه دارید و مطمئن شوید فایلهای پیکربندی و آرشیوهای بکاپ از طریق آدرس قابل دانلود نیستند. یک رخداد شگفتانگیز رایج، فایل .env فراموششده یا یک backup.zip است که در پوشهای عمومی جا مانده. برای توسعه و محیط اصلی از کلیدهای جدا استفاده کنید، به هر کلید کمترین دسترسی لازم را بدهید و هر کلیدی را که ممکن است افشا شده باشد عوض کنید.
۵. بکاپگیری را خودکار کنید
یک بکاپ سالم، حادثهی جدی را به یک ناراحتی کوچک تبدیل میکند. هدف این است که هم فایلها و هم پایگاه داده بهصورت خودکار و زمانبندیشده بکاپ بگیرند و جایی جز سروری که سایت را میزبانی میکند نگهداری شوند. اگر بکاپ روی همان دستگاه باشد، یک خرابی یا یک مهاجم میتواند هر دو را با هم ببرد.
بعد کاری را انجام دهید که بیشتر مردم رد میکنند: گاهی بکاپ را روی یک محیط آزمایشی بازیابی کنید. بکاپی که هرگز بازیابی نشده، یک فرض است نه یک تور نجات. چند نسخهی قدیمیتر را هم نگه دارید، چون بدافزار میتواند چند روز ناشناخته بماند و ممکن است لازم شود بیش از دیروز به عقب برگردید.
۶. آنچه کد شخص ثالث میتواند بکند را محدود کنید
کدهای تحلیل آمار، ابزارکهای چت، اسکریپتهای تبلیغاتی، فونتها و جاسازیها همه کدی هستند که کنترلی رویشان ندارید و با همان سطح دسترسی اسکریپتهای خودتان اجرا میشوند. فقط آنچه واقعاً لازم است بارگذاری کنید، هر چیز جدید را قبل از افزودن بررسی کنید و ابزارهایی را که دیگر استفاده نمیکنید حذف کنید. هدر Content-Security-Policy که در راهنمای هدرهای امنیتی که هر سایت کسبوکاری باید داشته باشد توضیح دادهایم، میتواند در صورت آلوده شدن یکی از این اسکریپتها آسیب را محدود کند. اسکریپتهای شخص ثالث کمتر، سایت را سریعتر هم میکند؛ موضوعی که در مقالهی سرعت سایت و Core Web Vitals دربارهاش نوشتهایم.
۷. اطلاعاتی را که مهاجم میتواند به دست آورد کم کنید
صفحههای خطا هرگز نباید جزئیات پشتهی خطا، مسیر فایلها یا اطلاعات پایگاه داده را به بازدیدکننده نشان بدهند. حالت اشکالزدایی (debug) را در محیط اصلی خاموش کنید، شمارهی نسخهها را تا جای ممکن پنهان کنید و مطمئن شوید نمایش فهرست پوشهها غیرفعال است تا کسی نتواند پوشهها را مرور کند. همهچیز را با HTTPS ارائه کنید، همهی ترافیک HTTP را هدایت کنید و کوکیهای نشست را با Secure و HttpOnly و SameSite علامت بزنید.
۸. پایش کنید و هشدار بگیرید
میخواهید خبر مشکل را از یک ابزار پایش بشنوید، نه از یک مشتری. پایش در دسترس بودن سایت، یادآور تاریخ انقضای دامنه و گواهی SSL، اسکن سادهی بدافزار و فهرست سیاه و هشدار برای تلاشهای غیرعادی ورود، همه ارزاناند و بیشتر رخدادها را زود میگیرند. حداقل هر از گاهی لاگ دسترسی هاست را برای الگوهای عجیب مرور کنید. Google Search Console را هم زیر نظر داشته باشید: هشدار ناگهانی دربارهی محتوای هکشده یا افزایش صفحههای ناآشنا اغلب اولین نشانهی قابلدیدن نفوذ است.
۹. از پیش بدانید اگر مشکلی پیش آمد چه میکنید
حتی سایتهای خوب محافظتشده هم ممکن است هدف قرار بگیرند، پس از پیش تصمیم بگیرید چه خواهید کرد. بنویسید با چه کسی تماس بگیرید، بکاپها کجاست و چطور بازیابی میشوند و چطور به پشتیبانی هاست دسترسی پیدا کنید. اگر به نفوذ مشکوک شدید، ترتیب معمول این است: سایت را از دسترس خارج کنید یا در حالت تعمیر بگذارید، همهی رمزها و کلیدهای مرتبط را عوض کنید، یک بکاپ سالم را بازیابی کنید یا فایلهای مخرب را حذف کنید، همهچیز را بهروز کنید و فقط بعد از آن سایت را برگردانید و بررسی کنید مهاجم از کجا وارد شده. رفع علامت بدون پیدا کردن نقطهی ورود، دعوت به حادثهی دوم است.
تبدیل چکلیست به یک عادت
هیچکدام از این مراحل بهتنهایی تخصص خاصی نمیخواهد. چیزی که آنها را مؤثر میکند پیوستگی است و پیوستگی دقیقاً چیزی است که صاحبان کسبوکار پرمشغله برای حفظش سختشان است. به همین دلیل خیلی از کسبوکارهای کوچک بخش روتین را به کسی میسپارند: بهروزرسانی، بکاپ، پایش و یک گزارش ماهانهی کوتاه. اگر این برایتان مفید است، خدمات پشتیبانی و نگهداری سایت ما همین چکلیست را بهصورت یک روال مداوم پوشش میدهد. در کنار زیرساخت فنی که در چکلیست سئوی فنی قبل از انتشار سایت آمده، مسیرهایی را میبندد که در عمل واقعاً مورد سوءاستفاده قرار میگیرند و این خیلی مهمتر از هر تنظیم تکافتادهای است.
مطالب مرتبط
- هدرهای امنیتی که هر سایت کسبوکاری باید داشته باشدمهمترین هدرهای امنیتی HTTP، اینکه هرکدام از چه حملهای جلوگیری میکنند و چطور در Next.js یا هاست Apache فعالشان کنیم.
- چکلیست سئوی فنی قبل از انتشار سایتمواردی از سئوی فنی که قبل از انتشار سایت باید بررسی شود: ایندکس، متادیتا، canonical، نقشهی سایت، دادهساختاریافته، سرعت و چندزبانگی.
- نکست جی اس یا وردپرس؟ انتخاب پلتفرم برای سایت کسبوکارمقایسهی صادقانهی Next.js و وردپرس برای سایت کسبوکار: هزینه، سئو، سرعت، امنیت، ویرایش محتوا، هاست و چندزبانگی، بههمراه یک روش ساده برای تصمیمگیری.
