
# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php56” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php56 .php .php5 .phtml
  
  # ==============================================
# فایل .htaccess امنیتی برای پنل مدیریت
# ==============================================

# جلوگیری از دسترسی به فایل‌های حساس
<FilesMatch "^(config\.env|\.htaccess|\.htpasswd|error_log|php\.ini|composer\.json|composer\.lock|package\.json|package-lock\.json|web\.config)$">
    Order Allow,Deny
    Deny from all
</FilesMatch>

# جلوگیری از دسترسی به فایل‌های با پسوند خاص
<FilesMatch "\.(ini|log|sql|bak|sh|sqlite|db|yml|yaml|json|lock|md|txt)$">
    Order Allow,Deny
   Deny from all
</FilesMatch>

# جلوگیری از لیست شدن محتویات پوشه
Options -Indexes

# جلوگیری از دنبال کردن سمبلینک
Options -FollowSymLinks

# محافظت از فایل .htaccess
<Files .htaccess>
    Order Allow,Deny
    Deny from all
</Files>

# جلوگیری از دسترسی مستقیم به فایل‌های PHP خاص
<FilesMatch "^(api\.php|config\.php|test_.*\.php)$">
    Order Allow,Deny
    Deny from all
</FilesMatch>

# جلوگیری از اسنیفینگ (MIME type sniffing)
Header set X-Content-Type-Options "nosniff"

# فعال کردن HSTS (HTTP Strict Transport Security)
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

# جلوگیری از clickjacking
Header set X-Frame-Options "SAMEORIGIN"

# فعال کردن XSS Protection
Header set X-XSS-Protection "1; mode=block"

# محدود کردن متدهای HTTP (فقط GET, POST, HEAD مجاز است)
<LimitExcept GET POST HEAD>
    Order Allow,Deny
    Deny from all
</LimitExcept>

# مسدود کردن IP‌های مخرب (در صورت نیاز)
# Deny from 192.168.1.100
# Deny from 10.0.0.0/8

# محدود کردن تعداد درخواست‌ها (محافظت در برابر brute force)
<IfModule mod_ratelimit.c>
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 100
</IfModule>

# فشرده سازی خروجی
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json
</IfModule>

# کش کردن در مرورگر برای فایل‌های استاتیک
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|webp|svg)$">
    Header set Cache-Control "max-age=2592000, public"
</FilesMatch>

# redirect به HTTPS (اگر SSL دارید)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

# جلوگیری از دسترسی به پوشه‌های سیستمی
RedirectMatch 403 ^/.*/(\.git|\.svn|\.hg|\.idea|\.vscode|node_modules|vendor)/.*$

# جلوگیری از دسترسی به فایل‌های شروع با نقطه
RedirectMatch 403 /\..*$

# خطای سفارشی 403
ErrorDocument 403 /403.html

# لاگ خطاهای امنیتی (اختیاری)
# SetEnvIf Request_URI ".*" security_log
# CustomLog logs/security_log common env=security_log
</IfModule>
# php -- END cPanel-generated handler, do not edit
