Apache - 拒绝与特定 URL 模式匹配的非本地请求



我需要以某种方式配置我的Apache(2.4),以防止回答特定的请求

我有一个在服务器上运行的应用程序myapplication.com. 浏览应用程序会在服务器上触发一些进一步的 ajax 请求,模式myapplication.com/abc。必须禁止这种"abc"请求,当从与本上下文不同的上下文调用时。因此,应该不可能在不同的选项卡中调用此请求。也不要在浏览器上下文之外调用这些请求,例如通过 curl 或 wget 或任何非浏览器 http 客户端。

指令必须如下所示

<If "Request has not been triggered as ajax from within my application" &&  %{REQUEST_URL} contains 'abc' ">
Require all denied 
</If>

此指令会导致错误,我不知道为什么,将=~更改为!~在语义上是错误的,但不会导致错误。

<If "%{HTTP_REFERER} !~ /myapplication.com/ && %{QUERY_STRING} =~ /abc/ ">
Require all denied
</If>

这有什么问题?

调试 apache 配置的任何帮助也将不胜感激 - 我没有得到任何信息,为什么这个指令会导致错误。

从浏览器中的myapplication.com进行的任何XMLHttpRequestfetch调用都将包含myapplication.com作为referer标头。

以下 apache conf 代码段将阻止引用者未myapplication.com的请求。

<Location "/abc">
RewriteEngine on
RewriteCond "%{HTTP_REFERER}" "!myapplication.com"
RewriteRule . - [R=403,L]
</Location>

此配置需要mod_rewrite,如果尚未启用,可以使用a2enmod rewrite启用。

相关内容

  • 没有找到相关文章

最新更新