簡體   English   中英

忽略 Apache 位置匹配以支持目錄匹配

[英]Apache Location match ignored in favour of Directory match

我有一個預先存在的基於 PHP 的 Web 應用程序,該應用程序受 IP 白名單保護,我正在嘗試推出一個需要繞過該列表的工具,但我想繼續保護它,以便它只能訪問通過特定的方法和特定的瀏覽器代理到特定的 URL; 我為我的 Apache 2.4 配置文件編寫了以下配置,認為它會這樣做:

<Location "/index.php/api/specific-end-point">
    SetEnvIf User-Agent "MyCustomBrowser" Approved
    <RequireAll>
        Require method POST
        Require env Approved
    </RequireAll>
</Location>

但是,我的所有請求都返回 403 Forbidden 錯誤代碼。 這個代碼塊似乎做的很少,並且已經嘗試過它,它甚至不允許我只用一個簡單的Require ip xxxx指令來公開該路徑。

IP 地址白名單由 webroot 上的目錄指令組成,類似於:

<Directory "/var/www">
AllowOverride None
Require all granted
Deny from all
Allow from 192.168.1.1
Allow from 192.168.1.2
...
</Directory>

應用程序文件index.php存在於/var/www/html目錄中,該目錄具有以下配置:

<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

我假設其他配置塊之一導致我的 403 響應,但我不知道我可以對配置做什么以應用我的所有安全要求,通常阻止不在白名單中的所有人,但允許我的工具訪問 POST到我的特定端點?

我建立了一個實驗室環境來模擬提到的第三方應用程序,並得出結論,IP 白名單功能被放在了由mod_access_compat啟用的 HTTPD 2.2 語法中。

我可以通過從<Directory "/var/www">部分中刪除 IP 白名單並轉換為以下 HTTPD 2.4 語法塊來解決此問題:

<Location "/">
AllowOverride None
<RequireAny>
Require ip 192.168.1.1
Require ip 192.168.1.2
...
</RequireAny>
</Location>

有了這些,我最初在問題中發布的代碼<Location "/index.php/api/specific-end-point">塊看起來可以成功運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM