ایجاد افزونههای امنیتی سفارشی برای وردپرس گاهی پیش میآید که حتی بهترین افزونههای آماده هم نمیتوانند دقیقاً آنچه را نیاز دارید به شما ارائه دهند. شاید در یک صنعت با مقررات سختگیرانه کار میکنید، یا سایتی با ریسک بالا را مدیریت میکنید، یا صرفاً میخواهید یک مشکل بسیار خاص را حل کنید. در این شرایط، ممکن است ساخت یک افزونه امنیتی سفارشی برای وردپرس بهترین گزینه به نظر برسد، و واقعاً هم میتواند باشد به شرط اینکه با دقت پیش بروید.
راهنمای مطالعه:
در چه مواقعی ساخت افزونهٔ اختصاصی منطقی است
بیایید با سناریوهای مطمئن شروع کنیم. نوشتن افزونهٔ اختصاصی معمولاً وقتی معنی دارد که:
- به قابلیتی نیاز دارید که هیچ افزونهٔ موجودی ارائه نمیدهد. برای مثال، ثبت فعالیتهای مدیر در یک پایگاه دادهٔ اختصاصی یا همگامسازی تلاشهای ورود با یک سیستم مانیتورینگ خارجی.
- تخصص امنیتی درونسازمانی دارید. اگر شما یا یکی از اعضای تیمتان تجربهٔ روشهای توسعهٔ امن را دارید و میدانید چگونه آسیبپذیریها را بررسی کنید.
- تحت استانداردهای سختگیرانهٔ انطباق فعالیت میکنید. صنایع تنظیمشده اغلب نیاز به کنترل بیشتری روی نحوهٔ ثبت و مدیریت رویدادهای امنیتی دارند که ممکن است به توسعهٔ سفارشی نیازمند باشد.
اگر این شرایط شامل حال شما میشود، یک افزونهٔ خوب طراحیشده میتواند دقیقاً کنترلی که نیاز دارید را بدون اضافهبار در اختیارتان قرار دهد.
چه چیزهایی را نباید بسازید
با این حال، بعضی چیزها هستند که هرگز نباید آنها را از صفر بسازید. کارهای امنیتی سفارشی پرریسکاند و اگر اشتباه پیادهسازی شوند، اغلب آسیبپذیریهای بیشتری ایجاد میکنند تا اینکه برطرفشان کنند.
- از نو نسازید احراز هویت. از ساختن مکانیزمهای ورود یا تأیید هویت کاربر خودداری کنید.
- سعی نکنید خودتان رمزنگاری یا منطق توکن. این موارد بسیار پیچیدهاند و بهتر است به کتابخانهها و سرویسهای آزمایششده سپرده شوند.
- تلاش نکنید جایگزین افزونههایی مثل Wordfence یا Jetpack Protect. این ابزارها مرتباً بهروزرسانی، تست و بررسی میشوند و نسخهٔ سفارشی شما بهسختی به بلوغ آنها میرسد.
خلاصه اینکه سفارشیسازی لزوماً بهتر نیست، مخصوصاً وقتی امن نباشد.
موارد استفاده امنتر برای افزونههای سفارشی
اگر تصمیم گرفتید سراغ راهحلهای سفارشی بروید، ابتدا از موارد ساده شروع کنید و روی کارهایی تمرکز کنید که پیادهسازی امنشان راحتتر است:
- قرار دادن آدرسهای IP مشخص در فهرست مجاز یا فهرست مسدود
- مسدودسازی یا ثبت لاگ رشتههای User-Agent مشکوک
- ارسال اعلان هنگام تغییر تنظیمات مدیریت یا نقشهای کاربری
حتی در این موارد هم حتما اطمینان حاصل کنید که کدتان توسط فردی با تجربه امنیتی بازبینی شده یا دستکم ابتدا در یک محیط آزمایشی (staging) تست شود.
سختتر کردن تنظیمات. htaccess یا Nginx برای افزایش امنیت
علاوه بر افزونهها و محافظتهای سطح میزبانی، پیکربندی وبسرورتان نقش کلیدی در ایمن نگهداشتن سایت وردپرستان دارد. چه از Apache با فایل .htaccess
استفاده کنید و چه از Nginx با بلاکهای سرور، تنظیمات درست میتواند راههای نفوذ رایج را مسدود کند. در ادامه چند روش ساده و مؤثر برای تقویت پیکربندیتان آورده شده است.
اضافه کردن هدرهای HTTP مربوط به امنیت
هدرهای امنیتی به مرورگرها کمک میکنند بهترین روشها را اعمال کنند و از انواع حملات رایج جلوگیری کنند. پیشنهاد میکنیم موارد زیر را اضافه کنید:
- Content-Security-Policy: تعیین میکند کدام منابع محتوا (مثل اسکریپتها و تصاویر) اجازه بارگذاری دارند و ریسک حملات XSS را کاهش میدهد.
- Strict-Transport-Security: مرورگرها را ملزم میکند همیشه از HTTPS استفاده کنند و اتصالات امن را تضمین میکند.
- X-Frame-Options: از جاسازی سایت شما در iframeهای دامنههای دیگر جلوگیری میکند و به مسدود کردن کلیکجکینگ کمک میکند.
- X-Content-Type-Options: مانع از حدس زدن نوع محتوا توسط مرورگرها میشود و جلوی برخی حملاتی را میگیرد که بر اساس سردرگمی MIME هستند.
دسترسی به فایلهای حساس را محدود کنید
یکی دیگر از مراحل حیاتی، محدود کردن دسترسی عمومی به فایلها و دایرکتوریهای مهم سیستم است:
- دسترسی مستقیم به wp-config.php،
.htaccess
و دیگر فایلهای پیکربندی سرور را مسدود کنید. - از اجرای فایلهای PHP در پوشه /wp-content/uploads/ جلوگیری کنید. این کار جلوی آپلود و اجرای اسکریپتهای مخرب توسط هکرها را میگیرد.
- نمایش فهرست دایرکتوریها را غیرفعال کنید تا مهاجمان نتوانند ساختار فایلهای شما را مرور کنند.
این قوانین ساده میتوانند بهطور بیسروصدا دستههای مختلف حملات را قبل از رسیدن به قالب یا افزونههای شما از بین ببرند.
محدود کردن روشهای درخواست HTTP
در نهایت، میتوانید با مسدود کردن روشهای HTTP غیرضروری که وردپرس به آنها وابسته نیست، امنیت را بهبود دهید:
- رد کردن TRACE، DELETE، OPTIONS و سایر روشها مگر اینکه بهطور خاص به آنها نیاز داشته باشید.
- در بیشتر محیطهای وردپرس، فقط اجازه GET، POST و HEAD را بدهید.
این کار سطح حملهی احتمالی سرور شما را کاهش میدهد و همهچیز را ساده نگه میدارد.
ادغام سرویسهای امنیتی شخص ثالث
حتی اگر وردپرس شما به خوبی امن باشد، ابزارهای شخص ثالث مثل Sucuri و Cloudflare میتوانند یک لایه محافظتی اضافی فراهم کنند، بهویژه برای مسدودکردن باتها، مانیتور ترافیک و شناسایی بدافزار.
این ابزارها بهطور گسترده استفاده میشوند و مستندات کاملی دارند، بنابراین انتخابهای ایمنتری نسبت به ایجاد یکپارچگی سفارشی از صفر هستند. اما این به معنای بیدقتی نیست. در ادامه چند نکته برای ادغام ایمن این ابزارها آمده است:
- از افزونههای تأییدشده یا API رسمی در صورت امکان استفاده کنید. به این ترتیب یکپارچگی شما ماژولار، قابل نگهداری و آسانتر برای بهروزرسانی خواهد بود.
- از ویرایش فایلهای اصلی وردپرس یا افزودن مستقیم جاوااسکریپت خام در قالبها پرهیز کنید. این روشها میتوانند آسیبپذیریهای جدید ایجاد کرده و بهروزرسانیهای بعدی را پرخطر کنند.
- ابتدا در یک محیط staging تست کنید تا مطمئن شوید هیچ چیزی با کش، عملکرد یا سایر امکانات حیاتی تداخل ندارد.
نظارت و هشدار برای فعالیتهای مشکوک
امنیت خوب فقط به مسدودسازی تهدیدها نیست، بلکه در تشخیص زودهنگام آنها هم اهمیت دارد. نظارت به شما کمک میکند مشکلاتی مثل موارد زیر را زود متوجه شوید:
- تلاشهای ناموفق ورود: افزایش ناگهانی تلاشهای ناموفق ورود میتواند به این معنی باشد که کسی سعی دارد با حملهی brute-force وارد شود.
- تغییرات غیرمجاز فایلها: اگر فایلهای اصلی یا افزونهها بدون بهروزرسانی یا انتشار تغییر کرده باشند، این یک علامت هشدار است و باید فوراً بررسی شود.
- ایجاد حساب کاربری جدید ادمین: ساخت ناگهانی حساب ادمین جدید، بهویژه اگر توسط کسی از تیم شما انجام نشده باشد، نیاز به بازبینی دارد.
میتوانید از WP-Cron یا نقاط پایانی REST API استفاده کنید تا اسکریپتهای سبکوزنی تنظیم کنید که بهطور مرتب این رویدادها را بررسی کنند.
برای تنظیمات پیشرفتهتر، ابزارهای تجمیع لاگ میتوانند به شما کمک کنند الگوها را در چندین سایت یا در طول زمان پیگیری و تحلیل کنید. ابزارهایی مثل Loggly Datadog و New Relic گزینههای محبوبی برای تجمیع لاگهای سرور، ردیابی رفتار کاربران و ارسال هشدار وقتی اوضاع مشکوک به نظر میرسد هستند.
افزونههای لاگگیری اختصاصی وردپرس هم وجود دارند ولی معمولاً محدودیتهایی در دامنه دارند یا عملکرد سنگینتری دارند. WP Activity Log یک گزینه محبوب است.

وقتی دادههای درست را جمعآوری کردید، هشدارها را از طریق ایمیل یا پیامک تنظیم کنید تا به محض وقوع هر اتفاق جدی فوراً مطلع شوید. برای جلوگیری از خستگی ناشی از هشدار، آستانههای مهم را مشخص کنید، مثل ۱۰ تلاش ناموفق ورود از یک آدرس آیپی یکسان در کمتر از یک دقیقه، نه صرفاً هر تلاش ناموفق ورود.
استفاده از مسدودسازی IP سفارشی و محدودسازی نرخ
وقتی نظارت رو پیادهسازی کردید، گام بعدی اینه که بدونید چطور واکنش نشون بدید. یکی از موثرترین روشها برای محافظت پیشگیرانه از سایت اینه که دسترسی و میزان دسترسی کاربران رو محدود کنید. مسدودسازی IP و محدودسازی نرخ در این کار حسابی کمک میکنند.
این تاکتیکها فقط برای سایتهای پرترافیک یا کاربران حرفهای نیست. حتی سایتهای کوچک هم میتونن از فیلترسازی هدفمند سود ببرن.
مسدودسازی IP سفارشی کمک میکنه خطر رو کم کنید چون بازیگرهای مخرب رو قبل از اینکه بتونن با سایت شما تعامل داشته باشن متوقف میکنه. با این روش میتونید آدرسهای IP شناختهشدهٔ مخرب یا رنجهای اونها رو مسدود کنید، خصوصاً اونهایی که بهخاطر حملات بروتفورس، اسپم یا اسکرپینگ پرچمگذاری شدن.
اگه محتوای شما یا فروشگاهتون به بعضی مناطق سرویس نمیده و ترافیک مشکوکی از اونجاها میبینید، میتونید بهصورت جغرافیایی کل کشورها رو مسدود کنید. قوانین کلادفلر روش امن و خوبی برای این کار هستن.
محدودسازی نرخ یه لایهٔ دیگه از محافظت اضافه میکنه، چون تعداد دفعات انجام یه عمل رو محدود میکنه، مثل ورود به حساب یا ارسال فرم. برای مثال میتونید تعداد تلاشهای ورود به سیستم رو برای هر IP محدود کنید تا رباتهای بروتفورس رو منصرف کنید، یا درخواستهای API یا فرم تماس رو محدود کنید تا جلوی اسپم یا حملات انکار سرویس رو بگیرید.
خیلی از افزونهها این قابلیت رو بهصورت پیشفرض دارن، اما اگه به کنترل بیشتری نیاز دارید، میتونید قوانین سبک رو در قالب یا افزونهٔ سفارشی خودتون پیاده کنید.
جمع بندی
امنیت وردپرس سفارشی میتواند حفاظت قدرتمندی ارائه دهد، اما تنها زمانی که با دقت اجرا شود. از نوشتن افزونههای هدفمند تا تنظیم دقیق پیکربندی سرور، راههای زیادی برای قفلکردن محکمتر سایت شما وجود دارد. اما برای اغلب صاحبان سایت، چالش واقعی دانستن آنچه ممکن است نیست بلکه دانستن آنچه ایمن است.
دیدگاه و پرسش