
چگونه مشکلات امنیتی اعلامشده توسط سامانه ملی هشدار را رفع کنیم؟
اگه برای سایتتون درخواست مجوز فعالیت آنلاین داده باشید، ممکنه بعد از یه مدت با گزارش سامانه ملی هشدار روبهرو بشید و یه سری ایراد و مشکلات امنیتی بهتون اعلام بشه. برای منم دقیقاً همین اتفاق افتاد و وقتی گزارش رو دیدم، اولش راستش خیلی از مواردش رو متوجه نشدم! مواردی مثل فایلهای وردپرس، پورتهای باز، هدرهای امنیتی و HSTS که نمیدونستم دقیقاً چی هستن و باید باهاشون چیکار کنم. توی این مقاله میخوام تجربه خودم رو مرحلهبهمرحله باهاتون در میون بذارم و بگم چطور این موارد رو بررسی و تا حدی برطرف کردم.

اول از همه وارد File Manager شو
- وارد cPanel سایتت شو.
- روی File Manager کلیک کن.
- از ستون سمت چپ، روی
public_htmlکلیک کن.
الان کاری به پوشههای وردپرس نداریم
حالا در همان public_html دنبال فایل زیر بگرد:
.htaccess
⚠️ ممکنه اولش نقطه داشته باشه و به همین دلیل دیده نشه.
اگر .htaccess را میبینی، فعلاً بازش نکن.اگر نمیبینی هم مشکلی نیست.
احتمالاً فایلهای مخفی در cPanel نمایش داده نمیشن. فقط همین یک تنظیم رو انجام بده:
نمایش فایلهای مخفی
- داخل File Manager هستی.
- بالای صفحه دنبال گزینه Settings بگرد و روی آن کلیک کن.
- یک پنجره باز میشود.
- گزینه Show Hidden Files (dotfiles) را تیک بزن.
- روی Save بزن.
حالا دوباره داخل public_html نگاه کن.
باید فایلی به اسم:
.htaccess
ببینی.
⚠️ فعلاً اصلاً روی .htaccess کلیک نکن و چیزی تغییر نده.
روی فایل .htaccess:
- کلیک راست کن.
- گزینه Download رو بزن.
- فایل رو روی کامپیوترت ذخیره کن.
این کار فقط برای پشتیبانه؛ اگر اشتباهی پیش اومد، نسخه اصلی رو داریم.
- در File Manager → public_html
- روی
.htaccessکلیک راست کن. - گزینه Edit رو بزن.
- اگر پنجرهای برای تأیید باز شد، روی Edit یا Continue بزن.
حالا یک صفحه باز میشه که داخلش چند خط کد میبینی.
فعلاً هیچ خطی رو پاک نکن.
فقط برو آخرین خط فایل و یک بار Enter بزن تا یک خط خالی ایجاد بشه.
بعد این کد رو دقیقاً در انتهای فایل قرار بده:
# Security Headers
Header always set X-Frame-Options “SAMEORIGIN”
Header always set X-Content-Type-Options “nosniff”
Header always set Referrer-Policy “strict-origin-when-cross-origin”
Header always set Permissions-Policy “camera=(), microphone=(), geolocation=()”
Header always set X-XSS-Protection “1; mode=block”
# Disable directory listing
Options -Indexes
# Protect WordPress information files
Require all denied
فعلاً HSTS را اضافه نمیکنیم.
اول همین موارد را انجام میدهیم و مطمئن میشویم سایت سالم میماند.
بعد از قرار دادن کد، روی Save Changes بزن.
سپس سایتت را باز کن و فقط این ۳ مورد را چک کن:
- صفحه اصلی باز شود.
- یک صفحه محصول باز شود.
- اگر ووکامرس داری، سبد خرید باز شود.
حالا میریم سراغ مرحله بعدی گزارش امنیتی: HSTS
دوباره برو:
cPanel → File Manager → public_html → .htaccess → Edit
برو آخر فایل، بعد از کدهایی که قبلاً اضافه کردیم، این خط را قرار بده:
Header always set Strict-Transport-Security “max-age=31536000”
سایت را باز کن و مطمئن شو همچنان بدون مشکل باز میشود.
بعد میریم سراغ مخفی کردن نسخه PHP؛ اون قسمت را باید از هاست بخواهیم انجام بده، چون هاستمون اغلب اشتراکیه. گزارش هم دقیقاً گفته نسخه PHP در هدر سایت نمایش داده میشود
حالا فعلاً هیچ کدی به .htaccess اضافه نکن. یک مورد از گزارش مانده که مربوط به نمایش نسخه PHP است. گزارش گفته نسخه PHP از طریق هدر سایت قابل مشاهده است.
چون هاست اشتراکی است، این قسمت را بهتر است خود پشتیبانی هاست انجام دهد.
این متن را برای پشتیبانی هاست بفرست:
سلام. در گزارش امنیتی سایت saqfino.ir اعلام شده که نسخه دقیق PHP در Response Header و مقدار X-Powered-By نمایش داده میشود. لطفاً در سطح سرور هدر X-Powered-By را حذف کنید تا نسخه PHP برای کاربران قابل مشاهده نباشد. همچنین در صورت امکان تنظیمات مربوط به Security Headers را نیز بررسی فرمایید.
یک تست ساده انجام بده
در مرورگر این دو آدرس را جداگانه باز کن:
https://adresssitet.ir/readme.html
https://adresssitet.ir/license.txt
اگر با خطای 403 Forbidden یا صفحه «دسترسی مجاز نیست» مواجه شدی، یعنی تنظیمی که انجام دادیم کار میکند