2013-11-25 17 views
0

我已經nginx的基本身份驗證設置,如下所示:Nginx身份驗證很容易繞過 - 錯誤?

server { 
    ... 
    location/{  
      ... 
      auth_basic "Restricted"; 
      auth_basic_user_file /etc/nginx/htpasswd; 
      ... 
    } 
} 

它的工作原理就像一個魅力,如果你訪問的東西,不重寫。

如果我訪問一個.php文件,它會加載它,就像沒有認證需要。之後,認證在重寫的頁面上也變得隨機。

任何想法是什麼?

概述: 訪問www.mysite.com和身份驗證工作! 訪問www.mysite.com/index.php並且認證被繞過,啓動站點而不詢問用戶/密碼。

編輯: 需要我將相同的auth_basic東西添加到位置〜.php {...}以及?我以爲它添加到根把所有後續結構的照顧,無論是腳本語言等

回答

2

Nginx的基本身份驗證爲你的作品已經把它的位置。

注意只有一個位置將被選中由nginx爲每個請求。這意味着在location /塊中放置一個命令,該命令將僅對該位置執行(這意味着您的請求不會被任何其他位置塊捕獲)。如果您希望基本身份驗證適用於您的服務器中的每個位置,只需將其放置在每個位置即可,或者在服務器塊內部更好,例如:

server { 
    auth_basic "Restricted"; 
    auth_basic_user_file /etc/nginx/htpasswd; 
    ... 
    location/{ 
     #auth_basic already active, no need to add it again 
     ... 
    } 
}