เพื่อความปลอดภัย ฉันพยายามปิดการใช้งานไฟล์ PHP ทั้งหมดยกเว้น /public/index.php
ฉันมีการกำหนดค่า nginx ซึ่งน่าเสียดายที่ไม่ทำงาน:
รูท /var/www/html/public;
add_header X-Frame-ตัวเลือก "SAMEORIGIN";
add_header X-XSS-การป้องกัน "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header นโยบายผู้อ้างอิง "ต้นทางเดียวกัน";
add_header เข้มงวดการขนส่งความปลอดภัย "อายุสูงสุด = 31536000 รวมโดเมนย่อย";
add_header Cross-Origin-Opener-Policy "ต้นทางเดียวกัน";
ชุดอักขระ utf-8;
ที่ตั้ง / {
try_files $uri $uri/ /index.php?$query_string;
}
สถานที่ = /favicon.ico { access_log off; ปิด log_not_found; }
ตำแหน่ง = /robots.txt { access_log off; ปิด log_not_found; }
สถานที่ ~ /\.(?!เป็นที่รู้จัก).* {
ปฏิเสธทั้งหมด
}
ตำแหน่ง ~ \.(html|htm|env)$ {
ปฏิเสธทั้งหมด
}
ตำแหน่ง ~ \.(php|phar)$ {
ที่ตั้ง !~ ^/index\.php$ {
ปฏิเสธทั้งหมด
}
}
ส่วนนี้ไม่ทำงานสำหรับฉัน
ตำแหน่ง ~ \.(php|phar)$ {
ที่ตั้ง !~ ^/index\.php$ {
ปฏิเสธทั้งหมด
}
}
รูทเอกสารถูกตั้งค่าเป็น /public และภายในโฟลเดอร์นั้นฉันยังมี .htaccess :
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
วิธีที่ดีที่สุดและปลอดภัยที่สุดที่จะทำคืออะไร?