امنیت سایت وردپرس: چکلیست عملی و کار بعد از هک

امنیت سایت وردپرس بیشتر از هر چیز به چند عادت ساده بستگی دارد: وردپرس، افزونهها و قالب را بهروز نگه دارید، هیچوقت قالب و افزونهٔ قفلشکسته (نالشده) نصب نکنید، برای هر حساب رمز قوی و جدا بگذارید و ورود دومرحلهای را روشن کنید، و همیشه یک نسخهٔ پشتیبان سالم بیرون از هاست داشته باشید. خود وردپرس نرمافزار ناامنی نیست؛ سایتهایی که هک میشوند معمولاً از راه همین چند نقطهٔ ضعف آشنا آسیب میبینند. در ادامه یک چکلیست عملی برای صاحب کسبوکار آمده و بعد گفتهایم اگر سایت شما هک شد، به چه ترتیبی کار کنید.
چرا سایتهای وردپرسی هک میشوند؟
وردپرس پرکاربرد است و همین باعث میشود رباتهای خودکار مدام سایتهای وردپرسی را برای پیدا کردن نقطهٔ ضعف بگردند. پس «سایت ما کوچک است و کسی کاری با آن ندارد» دلیل خوبی برای بیتوجهی نیست. رایجترین راههای نفوذ اینهاست:
- افزونه و قالب قدیمی: وقتی در یک افزونه یا قالب حفرهای پیدا میشود، سازندهاش نسخهٔ اصلاحشده میدهد. سایتی که بهروز نشود، همان حفرهٔ شناختهشده را باز نگه میدارد.
- قالب و افزونهٔ نالشده: نسخههای قفلشکستهٔ محصولات پولی که رایگان دستبهدست میشوند، گاهی کد مخرب یا در پشتی دارند و بهروزرسانی رسمی هم نمیگیرند.
- رمز ضعیف یا تکراری: رمزی که حدسزدنی است یا در جای دیگری هم استفاده شده، با تلاشهای پشتسرهم رباتها یا از راه نشت اطلاعات سایتهای دیگر لو میرود.
- حسابهای مدیر زیاد: هر حساب با دسترسی مدیرکل یک در ورود کامل به سایت است. حساب طراح قبلی، کارمندی که رفته یا حسابی که برای یک کار موقت ساخته شده، اگر بماند، خطر را بیشتر میکند.
- هاست ضعیف: در هاستی که سایتهای روی یک سرور درست از هم جدا نشدهاند، آلودهشدن یک سایت میتواند به سایتهای کناری هم برسد. نسخهٔ قدیمی PHP هم حفرههای امنیتی وصلهنشده دارد. اگر هاست فعلیتان چنین است، انتقال سایت وردپرس به هاست دیگر را با یک بکاپ سالم برنامهریزی کنید.
چکلیست امنیت سایت وردپرس
برای بالا بردن امنیت سایت وردپرس لازم نیست برنامهنویس باشید. بیشتر کارهای زیر را میتوانید خودتان از پیشخوان وردپرس و کنترلپنل هاست انجام دهید یا از کسی که سایت را نگه میدارد بخواهید.
۱. وردپرس، افزونهها و قالب را بهروز نگه دارید
بهروزرسانی مهمترین کار امنیتی است. دستکم هفتهای یک بار بخش بهروزرسانیهای پیشخوان را ببینید. پیش از بهروزرسانیهای بزرگ یک نسخهٔ پشتیبان بگیرید و بعد از آن، صفحههای اصلی سایت، فرم تماس و در فروشگاه، مسیر خرید را یک بار امتحان کنید. اگر افزونهای مدت زیادی است از سازندهاش نسخهٔ تازه نگرفته، دنبال جایگزین معتبر باشید.
۲. افزونهها و قالبهای بیاستفاده را حذف کنید
افزونهای که غیرفعال است، هنوز روی هاست است و کدش در دسترس. افزونهها و قالبهایی را که لازم ندارید کامل حذف کنید، نه فقط غیرفعال. یک قالب پیشفرض وردپرس را برای روز مبادا نگه دارید و بقیه را بردارید.
۳. هیچوقت قالب یا افزونهٔ نالشده نصب نکنید
صرفهجویی در خرید قالب یا افزونه با نسخهٔ قفلشکسته، از پرخطرترین تصمیمهاست. شما نمیدانید چه کسی در کد دست برده و چه چیزی به آن اضافه کرده است. محصول را از سازندهٔ اصلی یا فروشندهٔ رسمی بخرید، یا قالب اختصاصی سفارش دهید. فرق این دو راه را در مقالهٔ قالب آماده یا قالب اختصاصی وردپرس توضیح دادهایم.
۴. رمز قوی و جدا، بهعلاوهٔ ورود دومرحلهای
برای هر حساب یک رمز بلند و یکتا بگذارید و آن را جای دیگری استفاده نکنید. این قاعده فقط برای پیشخوان وردپرس نیست؛ کنترلپنل هاست، حساب FTP، پایگاهداده و ایمیلی که به حساب مدیر وصل است هم همین را لازم دارند. ورود دومرحلهای، یعنی گرفتن یک کد از گوشی علاوه بر رمز، را با یک افزونهٔ معتبر برای حسابهای مدیر روشن کنید. با این کار، حتی اگر رمز لو برود، ورود به سایت به این سادگی ممکن نیست.
۵. به هر کس فقط دسترسی لازم را بدهید
وردپرس نقشهای کاربری مختلفی دارد: مدیرکل، ویرایشگر، نویسنده، مشارکتکننده و مشترک. کسی که فقط مطلب خودش را مینویسد، نقش نویسنده کافی است و ویرایشگر برای کسی است که نوشتههای دیگران را هم ویرایش میکند؛ هیچکدام مدیرکل لازم ندارند. هر چند ماه یک بار فهرست کاربران را مرور کنید و حسابهایی را که دیگر استفاده نمیشوند حذف کنید یا نقششان را پایین بیاورید. برای طراح یا پشتیبان، حساب جدا بسازید و بعد از پایان کار آن را ببندید.
۶. تعداد تلاشهای ورود را محدود کنید
رباتها صفحهٔ ورود وردپرس را با هزاران ترکیب رمز امتحان میکنند. محدود کردن تعداد تلاشهای ناموفق از هر نشانی اینترنتی، این حملهها را بسیار سختتر میکند. این امکان در خود وردپرس نیست و با افزونهٔ امنیتی معتبر یا تنظیمات هاست فعال میشود.
۷. سایت فقط با HTTPS باز شود
گواهی SSL باعث میشود اطلاعاتی که در فرمها، صفحهٔ ورود و صفحهٔ پرداخت وارد میشود رمزنگاریشده جابهجا شود. مطمئن شوید همهٔ نشانیهای سایت به نسخهٔ HTTPS هدایت میشوند و مرورگر کنار نشانی هشدار «ناامن» نشان نمیدهد. در سایتهایی که فرمشان اطلاعات حساس میگیرد، کم کردن فیلدهای فرم هم به همین اندازه مهم است؛ نمونهاش را در طراحی سایت وکالت و فرم مشاورهٔ موکل توضیح دادهایم.
۸. پشتیبان منظم و بیرون از هاست
بکاپ آخرین خط دفاع است. اگر همهٔ کارهای دیگر شکست بخورد، یک نسخهٔ سالم از پیش از مشکل سایت را برمیگرداند. بکاپ باید هم فایلها و هم پایگاهداده را شامل شود، بهصورت خودکار و منظم گرفته شود و یک نسخه از آن بیرون از همان هاست نگه داشته شود؛ چون اگر هاست آلوده شود یا از دسترس خارج شود، بکاپی که روی خودش است هم به کار نمیآید. جزئیات این کار را در مقالهٔ بکاپ سایت وردپرس نوشتهایم.
۹. ویرایش فایل از داخل پیشخوان را ببندید
وردپرس بخشی دارد که میشود از داخل پیشخوان، کد قالب و افزونهها را ویرایش کرد. اگر کسی به حساب مدیر دست پیدا کند، از همین بخش میتواند کد مخرب بنویسد. با اضافه کردن ثابت DISALLOW_FILE_EDIT با مقدار true به فایل wp-config.php، این ویرایشگر خاموش میشود. این تغییر را به کسی بسپارید که با فایلهای سایت آشناست و پیش از آن از فایل یک نسخه بگیرید.
۱۰. دسترسی فایلها را درست تنظیم کنید
روی هاست، هر فایل و پوشه مشخص میکند چه کسی اجازهٔ خواندن و نوشتن دارد. توصیهٔ رایج برای وردپرس این است که پوشهها 755 و فایلها 644 باشند و wp-config.php از این هم سختگیرانهتر. هیچ فایل یا پوشهای نباید 777 باشد، یعنی برای همه قابل نوشتن. اگر مطمئن نیستید، تنظیم آن را به پشتیبان هاست یا سایت بسپارید.
۱۱. نسخهٔ PHP پشتیبانیشده
وردپرس روی PHP اجرا میشود و هر نسخهٔ PHP مدتی پشتیبانی امنیتی میگیرد و بعد کنار گذاشته میشود. در کنترلپنل هاست ببینید سایت با کدام نسخه اجرا میشود و اگر نسخه قدیمی است، پس از گرفتن بکاپ و هماهنگی با پشتیبان سایت، آن را بالا ببرید. برای انتخاب هاستی که این موارد را درست ارائه دهد، راهنمای خرید هاست برای سایت وردپرسی را ببینید.
۱۲. یک افزونهٔ امنیتی یا دیوارهٔ آتش معتبر
یک افزونهٔ امنیتی معتبر یا دیوارهٔ آتش وب میتواند درخواستهای مشکوک را شناسایی و مسدود کند، فایلها را برای تغییرات ناخواسته بررسی کند و تلاشهای ورود را زیر نظر بگیرد. فقط یکی را نصب کنید؛ چند افزونهٔ امنیتی همزمان معمولاً تداخل و کندی میآورد. اگر بعد از نصب افزونهٔ امنیتی پیشخوان سایت کند شد، علتهای کندی پیشخوان وردپرس را یکییکی بررسی کنید. افزونه جایگزین کارهای بالا نیست؛ مکمل آنهاست.
۱۳. سایت را زیر نظر داشته باشید
سایت خود را در Google Search Console ثبت کنید تا اگر گوگل مشکل امنیتی یا صفحههای مشکوکی پیدا کرد، باخبر شوید. هشدارهای افزونهٔ امنیتی را هم نادیده نگیرید.

| خطر | پیشگیری ساده |
|---|---|
| افزونه یا قالب قدیمی | بهروزرسانی منظم و حذف موارد بیاستفاده |
| قالب یا افزونهٔ نالشده | خرید از سازندهٔ اصلی یا قالب اختصاصی |
| رمز ضعیف یا تکراری | رمز یکتا برای هر حساب و ورود دومرحلهای |
| حسابهای مدیر اضافه | دادن کمترین نقش لازم و بستن حسابهای قدیمی |
| حملهٔ حدس رمز | محدود کردن تلاشهای ورود |
| تغییر کد از پیشخوان | بستن ویرایشگر فایل در wp-config.php |
| از دست رفتن سایت | بکاپ خودکار و یک نسخه بیرون از هاست |
از کجا بفهمید سایت هک شده است؟
هک همیشه با صفحهٔ سیاه و پیام تهدید همراه نیست. بیشتر وقتها سایت ظاهراً سالم است و آلودگی جای دیگری خودش را نشان میدهد. این نشانهها را جدی بگیرید:
- صفحههای اسپم در نتایج گوگل: در گوگل عبارت
site:example.comرا با دامنهٔ خودتان جستوجو کنید. اگر صفحههایی با عنوانهای بیربط، مثلاً تبلیغ دارو یا شرطبندی یا متنهایی به زبان دیگر، دیدید که شما نساختهاید، احتمال آلودگی زیاد است. - انتقال به سایت دیگر: بعضی کدهای مخرب فقط روی موبایل یا فقط برای کسی که از گوگل آمده فعال میشوند. سایت را با گوشی و از راه نتیجهٔ گوگل باز کنید، نه فقط با نوشتن مستقیم نشانی.
- کاربر مدیر ناشناس: اگر در فهرست کاربران حساب مدیری هست که نمیشناسید، فوراً بررسی کنید.
- هشدار مرورگر یا Search Console: هشدار قرمز مرورگر هنگام باز کردن سایت، یا پیامی در گزارش «مشکلات امنیتی» Search Console، نشانهٔ روشنی است.
- رفتارهای عجیب دیگر: فایلهای ناآشنا روی هاست، کندی ناگهانی بیدلیل، ایمیلهای اسپمی که از سرور شما فرستاده شده یا پیام هاست دربارهٔ مصرف غیرعادی.
اگر سایت وردپرسی هک شد چه کنیم؟
در لحظهٔ اول، مهمترین چیز آرامش است. پاک کردن عجولانهٔ سایت یا حذف دستهجمعی فایلها، هم ردپای نفوذ را از بین میبرد و هم ممکن است اطلاعاتی را که هنوز سالم است نابود کند. این مراحل را به ترتیب جلو بروید:
- یک نسخه از وضعیت فعلی بگیرید. از فایلها و پایگاهدادهٔ سایت آلوده، همانطور که هست، یک کپی جدا نگه دارید. این کپی برای پیدا کردن راه نفوذ است، نه برای بازگرداندن.
- همهٔ رمزها را عوض کنید. رمز کنترلپنل هاست، همهٔ حسابهای مدیر وردپرس، پایگاهداده، FTP و ایمیل مرتبط. بعد از عوض کردن رمز پایگاهداده، باید همان رمز در
wp-config.phpهم بهروز شود. کلیدهای امنیتی (salt) همین فایل را هم عوض کنید تا همهٔ ورودهای باز بسته شوند. حسابهای ناشناس را حذف کنید. - سایت را پاکسازی یا بازگردانی کنید. سادهترین راه، برگرداندن بکاپی است که مطمئنید پیش از هک گرفته شده است. اگر چنین بکاپی ندارید، باید فایلهای وردپرس، قالب و افزونهها با نسخهٔ سالم از منبع اصلی جایگزین و پایگاهداده و پوشهٔ بارگذاریها برای کد مخرب بررسی شوند. این کار دقت میخواهد و بهتر است به متخصص سپرده شود.
- همه چیز را بهروز کنید. بلافاصله پس از بازگردانی، وردپرس، قالبها و افزونهها را به آخرین نسخه برسانید و موارد بیاستفاده یا نالشده را حذف کنید؛ وگرنه همان راه دوباره باز است.
- راه نفوذ را پیدا کنید. افزونهٔ آسیبپذیر، رمز لورفته یا حساب فراموششده؟ تا علت روشن نشود، احتمال هک دوباره زیاد است. گزارشهای هاست و کپیای که در قدم اول گرفتید در اینجا به کار میآید.
- از گوگل درخواست بررسی دوباره کنید. اگر گوگل سایت را علامت زده بود، پس از پاکسازی کامل، در گزارش «مشکلات امنیتی» Search Console درخواست بررسی بدهید و توضیح دهید چه کارهایی انجام شده است. صفحههای اسپمی را هم که ساخته شده بودند حذف کنید تا از نتایج خارج شوند.

بعد از برگشتن سایت، چکلیست بخش قبل را کامل اجرا کنید تا اتفاق تکرار نشود.
امنیت، بخشی از نگهداری سایت است
امنیت کاری نیست که یک بار انجام شود و تمام. بهروزرسانی، بکاپ، مرور کاربران و زیر نظر گرفتن هشدارها کارهای تکراریاند و بهتر است مشخص باشد چه کسی و هر چند وقت یک بار انجامشان میدهد. اگر خودتان وقت این کار را ندارید، آن را به یک پشتیبان بسپارید؛ در مقالهٔ پشتیبانی سایت وردپرسی گفتهایم پشتیبانی خوب چه کارهایی را شامل میشود و موقع انتخابش به چه چیزهایی نگاه کنید.
سایتوپیا و امنیت سایتهایی که میسازد
سایتوپیا سایتهای وردپرسی را با قالب اختصاصی میسازد؛ قالبی که برای همان سایت نوشته شده و بحث نسخهٔ قفلشکسته در آن پیش نمیآید. هاست و دامنه به نام خود شما خریداری میشود تا دسترسی کامل در دست خودتان بماند. اگر سایتتان را سایتوپیا ساخته، تا ۶ ماه بعد از تحویل، رفع ایرادهای سایت و پاسخ به سؤالهای مدیریت سایت با ماست. برای آشنایی با روند کار به صفحهٔ طراحی سایت وردپرسی سر بزنید و اگر سؤالی دارید، از صفحهٔ تماس با ما بپرسید.
پرسشهای رایج
چگونه امنیت سایت وردپرسی خود را بالا ببریم؟
از سه کار شروع کنید: وردپرس، افزونهها و قالب را بهروز کنید و موارد بیاستفاده را حذف کنید؛ برای همهٔ حسابها رمز قوی و جدا بگذارید و ورود دومرحلهای را روشن کنید؛ و بکاپ خودکاری راه بیندازید که یک نسخهاش بیرون از هاست باشد. بعد سراغ بقیهٔ چکلیست بروید.
آیا نصب افزونهٔ امنیت سایت وردپرس کافی است؟
نه. افزونهٔ امنیتی معتبر جلوی بخشی از حملهها را میگیرد و هشدار میدهد، اما اگر افزونهها بهروز نباشند، قالب نالشده باشد یا رمز مدیر ضعیف باشد، کار زیادی از آن برنمیآید. یک افزونهٔ امنیتی کافی است؛ چندتا با هم مشکلساز میشوند.
تست امنیت سایت وردپرس را چطور انجام دهیم؟
یک بررسی ساده را خودتان میتوانید انجام دهید: ببینید چیزی منتظر بهروزرسانی نمانده باشد، فهرست کاربران و نقشهایشان را مرور کنید، با جستوجوی site: صفحههای ناآشنا را در گوگل بگردید و گزارش «مشکلات امنیتی» Search Console را نگاه کنید. بررسی عمیقتر کد و تنظیمات سرور کار متخصص است.
قالب نالشده واقعاً خطرناک است؟
بله. کسی که قفل محصول را شکسته، میتوانسته هر کدی به آن اضافه کند و شما راهی برای مطمئن شدن ندارید. این نسخهها بهروزرسانی رسمی هم نمیگیرند، پس حفرههای بعدیشان هم باز میماند.
اگر سایت هک شد، کل سایت را پاک کنیم و از نو بسازیم؟
معمولاً لازم نیست و بهتر است عجله نکنید. اول از وضعیت فعلی کپی بگیرید و رمزها را عوض کنید، بعد بکاپ سالمِ پیش از هک را برگردانید یا سایت را پاکسازی کنید. ساخت دوباره، بدون پیدا کردن راه نفوذ، تضمین نمیکند که اتفاق تکرار نشود.
خدمات امنیت سایت وردپرس شامل چه کارهایی است؟
معمولاً بهروزرسانی منظم، تنظیم ورود امن و نقش کاربران، راهاندازی بکاپ و دیوارهٔ آتش، زیر نظر گرفتن هشدارها و در صورت هک، پاکسازی و بازگردانی. پیش از سپردن سایت به هر کسی، بپرسید دقیقاً کدام کارها را انجام میدهد و هر چند وقت یک بار.