【问题标题】:POST requests to a specific php .htaccess [duplicate]POST请求到特定的php .htaccess [重复]
【发布时间】:2019-02-22 12:32:52
【问题描述】:

是否可以将所有 POST 请求转发到特定的 php 文件,想用 .htaccess 文件解决这个问题?以便您可以继续相应地工作?

【问题讨论】:

    标签: php .htaccess


    【解决方案1】:

    在您的 .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?它旨在防止来自外部的攻击。那么我可以在哪里与您一起调整,将其定向到一个额外的文件?抱歉,我不太擅长 .htaccess
    【解决方案2】:

    如果您想将所有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 以通过令牌加强安全性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-11
      • 1970-01-01
      • 2011-09-11
      • 2016-04-03
      • 1970-01-01
      • 2021-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多