CSP وردپرس: راهنمای جامع پیادهسازی و افزایش امنیت سایت
وقتی درباره امنیت وبسایت صحبت میکنیم، خیلی از مدیران سایتها فقط به نصب افزونههای امنیتی یا تغییر آدرس ورود فکر میکنند. اما یکی از قدرتمندترین و در عین حال مغفولترین لایههای دفاعی، تنظیم هدر امنیتی CSP یا همان Content Security Policy است. اگر دوست دارید جلوی حملات خطرناکی مثل XSS و تزریق کد را بگیرید و خیالتان از بابت اجرای کدهای مخرب راحت باشد، این راهنما دقیقاً برای شما نوشته شده است.
خلاصه نقشه راه CSP در وردپرس (در یک نگاه)
تعریف دقیق منابع مجاز برای بارگیری اسکریپتها، استایلها و تصاویر.
جلوگیری از حملات XSS، تزریق اسکریپت و سرقت کلوچهها (Cookies).
شروع با حالت Report-Only و سپس فعالسازی نهایی و اجباری.
فهرست بخشهای این مقاله
- فست پاسخ: CSP چیست و چرا وردپرس به آن نیاز دارد؟
- CSP چطور کار میکند؟ (مکانیسم دفاعی)
- دستورالعملهای اصلی (Directives) در Content Security Policy
- روشهای پیادهسازی CSP در وردپرس
- جدول مقایسهای: حالت Report-Only در برابر حالت Active
- حل مشکلات رایج وردپرس بعد از فعالسازی CSP
- راهنمای عیبیابی سریع (Troubleshooting)
- سوالات متداول کاربران (FAQ)
CSP در وردپرس چیست؟ (پاسخ سریع)

سیاست امنیت محتوا یا CSP (Content Security Policy) یک هدر امنیتی HTTP است که به مرورگر کاربر دستور میدهد فقط منابع (مانند اسکریپتها، فونتها و تصاویر) را از دامنه و دامنههای تاییدشده بارگیری کند. در وردپرس، CSP جلوی کدهای ناشناس، اسکریپتهای مخرب تزریقشده و حملات Cross-Site Scripting (XSS) را بهطور کامل میگیرد.
چرا سایت وردپرسی شما به CSP نیاز دارد؟

وردپرس به دلیل متنباز بودن و استفاده از پلاگینها و قالبهای متعدد، همواره در معرض خطر قرار دارد. اگر یکی از افزونههای شما دارای باگ امنیتی باشد، هکرها میتوانند اسکریپت مخرب خود را درون صفحات سایت تزریق کنند. وقتی کاربر یا مدیر سایت وارد آن صفحه میشود، آن اسکریپت اجرا شده و اطلاعاتی نظیر کوکیهای نشست (Session Cookies) به سرقت میرود.
با پیادهسازیی دقیق این هدر امنیتی، حتی اگر هکر موفق به تزریق کد شود، مرورگر اجازه اجرای آن کد را نخواهد داد. زیرا دامنه هکر در لیست سفید (Whitelist) هدر CSP شما تعریف نشده است. به همین سادگی، یک لایه حفاظتی بینظیر برای مدیریت کامل مباحث امنیت سایت ایجاد میشود.
دستورالعملهای کلیدی در ساختار CSP

یک سیاست امنیتی محتوا از اجزای مختلفی تشکیل شده است که هر کدام مسئول کنترل یک نوع دارایی (Asset) در وبسایت هستند. مهمترین دایرکتیوها عبارتند از:
- default-src: مقدار پیشفرض برای تمام منابعی که بهطور مشخص نام برده نشدهاند.
- script-src: تعیین میکند چه فایلهای جاوااسکریپتی و از چه دامنههایی اجازه اجرا دارند.
- style-src: کنترلکننده فایلهای CSS و استایلهای برگه.
- img-src: مشخصکننده دامنههای مجاز برای بارگیری تصاویر.
- font-src: دامنههای مجاز برای فونتها (مانند گوگل فونت یا فونتهای محلی).
- connect-src: محدودکردن مقصد درخواستهای AJAX، WebSocket و Fetch.
- frame-ancestors: جلوگیری از قرارگیری سایت شما درون آیفریم (ممانعت از حملات Clickjacking).
نکته مهم: در وردپرس به دلیل وجود اسکریپتهای درونخطی (Inline Scripts) متعدد در افزونهها، پیکربندی دقیق script-src اهمیت فوقالعادهای دارد و بیدقت در آن ممکن است ظاهر یا کارکرد برخی بخشها را مختل کند.
روشهای فعالسازی CSP در وردپرس
برای پیادهسازی CSP روی سایت وردپرسی سه راهکار اصلی وجود دارد. شما میتوانید متناسب با دانش فنی خود یکی از روشهای زیر را انتخاب کنید.
روش اول: استفاده از فایل htaccess. (پیشنهادی برای سرورهای آپاچی و لایت اسپید)
این روش سریعترین و بهینهترین حالت است، زیرا قبل از اجرای کدهای PHP وردپرس، هدر توسط وبسرور ارسال میشود. کافی است کد زیر را به انتهای فایل .htaccess اضافه کنید:
Header set Content-Security-Policy “default-src ‘self’; script-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’ https://www.google-analytics.com; style-src ‘self’ ‘unsafe-inline’ https://fonts.googleapis.com; img-src ‘self’ data: https:; font-src ‘self’ https://fonts.gstatic.com;”
</IfModule>
روش دوم: قرار دادن کد در فایل functions.php
اگر از وبسرور NGINX استفاده میکنید یا دسترسی به htaccess ندارید، میتوانید هدر را از طریق PHP ارسال کنید. در فرایند توسعه سفارشی وب، افزودن این کد به فایل functions.php پوسته فعال یا افزونه اختصاصی کاملاً مرسوم است:
header(“Content-Security-Policy: default-src ‘self’; script-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’; style-src ‘self’ ‘unsafe-inline’; img-src ‘self’ data:;”);
}
add_action(‘send_headers’, ‘add_csp_security_header’);
روش سوم: پیادهسازی از طریق افزونههای امنیتی
اگر تمایلی به دستکاری کدها ندارید، افزونههایی مثل HTTP Headers یا افزونههای جامع امنیتی گزینههای مناسبی هستند. برای مطالعه بیشتر درباره مشخصات هر ابزار میتوانید مقاله بررسی و مقایسه ابزارهای امنیتی را بررسی کنید تا دید کاملتری نسبت به عملکرد آنها به دست آورید.
حالت Report-Only؛ قبل از خراب شدن سایت تست کنید!
یکی از بزرگترین نگرانیهای مدیران سایتها این است که بلافاصله بعد از قرار دادن CSP، لایوت (Layout) یا برخی فرمهای سایت از کار بیفتند. برای جلوگیری از این مشکل، مرورگرها قابلیتی به نام Content-Security-Policy-Report-Only ارائه دادهاند.
در این حالت، مرورگر جلوی هیچ درخواستی را نمیگیرد! تنها کاری که انجام میدهد این است که خطاهای احتمالی و مواردی که با قوانین شما مغایرت دارند را به کنسول مرورگر یا یک آدرس مشخص (Report URI) ارسال میکند. به این ترتیب میتوانید بدون نگرانن از خرابی سایت، تمام منابع را شناسایی کنید.
| حالت اجباری (Content-Security-Policy) | حالت گزارشدهی (Report-Only) |
|---|---|
| کدهای تأییدنشده را مسدود میکند. | کدها را مسدود نمیکند، فقط خطای آنها را ثبت میکند. |
| امنیت واقعی و زنده ایجاد میکند. | مناسب فاز آزمایش و عیبیابی است. |
| در صورت اشتباه، ممکن است فونت یا اسکریپتها لود نشوند. | هیچ اختلالی در عملکرد تجربی کاربران ایجاد نمیشود. |
مشکل چالشبرانگیز Inline Scripts در وردپرس
بزرگترین مانع در تنظیم CSP برای وردپرس، استفاده بیرویه قالبها و افزونهها از کدهای جاوااسکریپت درونخطی (مثل تکه کدهای مستقیم داخل کدهای HTML) است. براساس استاندارد CSP، کدهای درونخطی ناامن هستند زیرا هکرها دقیقا از همین روش برای تزریق اطلاغات مخرب استفاده میکنند.
برای حل این موضوع سه راهکار پیش رو دارید:
- استفاده از عبارت ‘unsafe-inline’: سریعترین راه است اما امنیت را کمی کاهش میدهد.
- استفاده از Nonce (کد یکبار مصرف): اختصاص یک کد اختصاصی به هر اسکریپت که توسط سرور تولید میشود.
- استفاده از هش (Hash): محاسبه هش کدهای درونخطی و افزودن آن به هدر CSP.
اگر صاحب یک طراحی سایت شرکتی هستید، حتماً با تیم فنی خود مشورت کنید تا مناسبترین راهکار غیر از unsafe-inline را پیادهسازی کنند. اما برای اکثر وبسایتهای معمولی، ترکیب 'self' 'unsafe-inline' برای شروع و حفظ عملکرد پوسته الزامی است.
تاثیر CSP روی سئو و عملکرد وبسایت
خیلی از وبمستران نگران این هستند که آیا هدرهای امنیتی روی رتبه گوگل تاثیر منفی میگذارند یا خیر. واقعیت این است که موتورهای جستجو و پروتکلهای جدید گوگل به امنیت کاربر اهمیت فوقالعادهای میدهند. اجرای درست CSP نشاندهنده حرفهای بودن مدیریت زیرساخت است و مانع از هک شدن و قرارگیری سایت در لیست سیاه موتورهای جستجو میشود.
در واقع با رعایت ناتکات امنیتی و اصول بهینهسازی برای موتورهای جستجو، مطمئن خواهید شد که رباتهای گوگل بدون هیچ مانعی صفحات شما را کراول میکنند، در حالی که دسترسی عبارات مخرب کاملا بسته شده است.
همچنین اگر پروژههای بزرگتر مانند ساخت فروشگاه اینترنتی را مدیریت میکنید، حفظ اعتماد مشتریان و درگاههای پرداخت در اولویت اول قرار دارد که CSP یکی از ارکان اصلی آن محسوب میشود.
راهنمای عیبیابی سریع (Troubleshooting)
اگر بعد از تنظیم CSP با مشکلاتی در سایت مواجه شدید، گامهای زیر را به ترتیب دنبال کنید:
۱. عدم نمایش تصاویر یا فونتها
علت: دامنه شبکه توزیع محتوا (CDN) یا گوگل فونت در هدر تعریف نشده است.
راهحل: دامنه مربوطه را به بخش img-src یا font-src اضافه کنید. مثلاً https://fonts.gstatic.com.
۲. کار نکردن آمارگیرها (مثل گوگل آنالیتیکس)
علت: بلاک شدن اسکریپتهای آمارگیری یا مسیرهای ارسال داده.
راهحل: عبارات https://www.google-analytics.com و https://region1.google-analytics.com را به script-src و connect-src بیفزایید.
۳. قفل شدن پیشخوان وردپرس
علت: سختگیری بیش از حد در بخش مدیریت.
راهحل: مقاله مربوط به محافظت از پیشخوان مدیریت را مطالعه کنید و مطمئن شوید کدهای بخش ادمین به صورت جداگانه استثنا شدهاند.
همچنین برای یادگیری بیشتر در مورد راهکارهای کلیدی برای افزایش ایمنی پیشنهاد میکنیم تنظیمات سایر هدرها مانند X-Frame-Options و X-Content-Type-Options را هم همزمان اجرا کنید.
همیشه توصیه میشود پس از اعمال تغییرات، با استفاده از روشهای استاندارد به تست و ارزیابی نفوذپذیری بپردازید تا مطمئن شوید کدهای اضافه شده بدون نقص کار میکنندد. ابزارهای آنلاین مانند SecurityHeaders.com در این مسیر ابزارهای فوقالعادهای هستند.
سوالات متداول (FAQ)
خیر، CSP تنها یک دستور متنی چند خطی در هدر پاسخ سرور است و هیچ بار پردازشی سنگینی روی سرور یا مرورگر کاربر ایجاد نمیکند. حتی میتواند با مرور کدهای اضافی، سرعت را بهبود دهد.
کافی است کلید F12 را در مرورگر بزنید، به زبانه Console بروید و سایت را رفرش کنید. سپس سایت را با حالت Report-Only اجرا کنید؛ تمام منابع بارگیریشده و خطاهای عدم دسترسی در کنسول لیست میشوند.
اکثر افزونههای امنیتی کار چک کردن مداوم و اسکن سیستم را انجام میدهند اما CSP مستقیماً روی مرورگر بازدیدکننده اعمال میشود و خط دفاعی آخر در برابر اسکریپتهای تزریقی است.
در نهایت، برای تدوین استراتژیهای جامعتر رشد و حفظ امنیت میتوانید از خدمات استراتژیهای دیجیتال مارکتینگ و مشاوره تخصصی در صفحه اصلی مهیار هاب بهرهمند شوید.
جمعبندی و اقدام بعدی
پیادهسازی Content Security Policy در وردپرس شاید در نگاه اول کمی پیچیده به نظر برسد، اما یکی از حیاتیترین قدمها برای مسدودسازی حملات تزریق کد و XSS است. پیشنهاد میکنیم همین امروز با حالت Report-Only شروع کنید، منابع سایت را شناسایی کرده و سپس هدر نهایی را فعال سازید تا پایگاه اینترنتی امنتر و مطمئنتری داشته باشید.