2016-11-24 157 views
1

在我的yii項目中,我有ChangelogLicence文本文件。我知道RBAC並將其應用於每個Controller,但是如何防止任何訪客用戶查看這些文本文件。到目前爲止,任何人都可以查看。如何停止訪問文本文件?

我在htaccess文件

<Files ~ "(.txt)"> 
Order allow, deny 
Deny from all 
</Files> 

使用該但這是txt file工作,這些文件沒有extension

+0

多少文件有**的**約上你想拒絕訪問,而且文件也有類似的名字? –

回答

0

您的問題是一個很小的電路板,所以答案是小將軍。但有幾種方法;

選項1.刪除更改日誌和許可證文件?如果這些是yii安裝changelog和許可證,那麼他們不需要留在服務器上。只要確保您遵守許可證要求即可。

選項2. 您提到「guest用戶」哪個htaccess是不會與yii爲授權用戶良好集成。您可以將文件移動到包含單行Deny from all的.htaccess文件夾中。這會阻止除您在服務器上執行的PHP之外的所有人。

您現在可以在控制器中創建一個方法/操作,它只是迴應文件內容。 file-get-contentsreadfile。將此身份驗證包裝起來,以便只有非訪客用戶才能使用該方法。

如果只有兩個靜態文件,那麼可能只是每個「動作」。如果它的許多文件正在改變名稱等,那麼你接受一個I​​D到控制器傳遞給一個模型,使用scandir並檢查file真的exists並吐出你的輸出來查看。

選項2.1 文件夾用的.htaccess你也可以將文件移動到虛擬主機提供商的基礎目錄的父,如果你有這樣的訪問,而不是。這意味着你的web服務器不能提供文件,但php仍然可以通過本地路徑訪問它。

選項3 在.htaccess可以使用進行AuthType basic和將調用您的Web服務器提示輸入用戶名和密碼的用戶作爲在.htaccess配置。這是有問題的,因爲界面不是用戶友好的,並且很難與你的webapps用戶db集成。

選項4 的.htaccess可以支持其他AuthType秒,但選擇2成爲在這一點上要容易得多。

1

您可以阻止訪問所有的文件,而不使用在你的站點根目錄的.htaccess或者Apache的配置/虛擬主機文件這一規則擴展名:

RewriteEngine On 

# If the request is for a valid file 
RewriteCond %{REQUEST_FILENAME} -f 
# if there is no extension then block 
RewriteRule ^[^.]+$ - [F]