【发布时间】:2019-02-22 12:32:52
【问题描述】:
是否可以将所有 POST 请求转发到特定的 php 文件,想用 .htaccess 文件解决这个问题?以便您可以继续相应地工作?
【问题讨论】:
是否可以将所有 POST 请求转发到特定的 php 文件,想用 .htaccess 文件解决这个问题?以便您可以继续相应地工作?
【问题讨论】:
在您的 .htaccess 文件中试试这个:
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
【讨论】:
如果您想将所有POST 请求重定向到特定文件,则通过REQUEST_METHOD 标志捕获请求。假设所有请求都应该发送到processPostData.php,那么您的.htaccess 应该如下所示:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^POST$ [NC]
RewriteRule !^processPostData\.php$ /processPostData.php [NC,L]
这也将转发所有请求数据。如果您希望仅过滤真正的帖子请求(即仅来自您的站点),那么您可以只允许来自您的站点的请求并将用户代理限制为仅浏览器。
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^yoursite\.com [NC]
RewriteCond %{HTTP_USER_AGENT} ^.*(mozilla|chrome|opera|safari|ie).+$ [NC] # you can add more agents here
RewriteCond %{REQUEST_METHOD} ^POST$ [NC]
RewriteRule !^processPostData\.php$ /processPostData.php [NC,L]
注意:这仍然不是一个可以采用的强有力的安全策略。我建议您查看 CSRF attacks 以通过令牌加强安全性。
【讨论】: