如果有人尝试打开 php 文件中的 /?a=b AND 2=2,我可以返回 404 或 403 状态吗?
我的意思是:如果有人尝试打开index.php/?a=b AND 2=2
我的虚拟主机是:
server {
listen 80;
listen [::]:80;
server_name mysite.com www.mysite.com;
root /var/www/mysite.com/public_html;
index index.php;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
root /var/www/mysite.com/public_html;
index index.php index.html index.htm index.nginx-debian.html;
server_name mysite.com www.mysite.com;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_read_timeout 240;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\. {
deny all;
}
location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}
答案1
如果文件不存在,则应自动返回 404。
http_response_code(404);
由于该文件显然存在,您可以在所需条件下从 php 文件返回 404 。
但是如果您的目标是防止 SQL 注入,您应该在构建查询时转义所有输入,而不是依赖外部机制来过滤...