2016-11-24 3 views
1

В моем проекте yii у меня есть Changelog и Licence текстовых файлов. Я знаю о RBAC и применял его на каждом Controller, но как я могу запретить любому гостевому пользователю просматривать эти текстовые файлы. Как и до сих пор, каждый может это рассмотреть.Как остановить доступ к текстовым файлам?

Я использовал это в моем htaccess файле

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

Но это работает для txt file и эти файлы не имеют extension

+0

Сколько файлов есть ** в ** ок, на которой вы хотите запретить доступ, а также файлы имеют похожие имена или нет? –

ответ

0

Вы вопрос не является немного доска, и поэтому ответ немного общего , но есть пара подходов;

вариант 1. удалить файлы изменений и лицензий? если это yii install changelog и лицензия, тогда их не нужно оставлять на сервере. просто убедитесь, что вы соблюдаете требования лицензии.

вариант 2. Вы упомянули «гостевой пользователь», который htaccess не собирается хорошо интегрировать с yii для авторизованных пользователей. вы можете переместить файлы в папку с .htaccess, содержащую одну строку Deny from all. это блокирует всех, кроме PHP, выполняемых на вашем сервере.

Теперь вы можете создать метод/действие в контроллере, который просто отображает содержимое файла. file-get-contents или readfile. оберните эту аутентификацию, чтобы только пользователи, не являющиеся гостями, могли использовать этот метод.

если есть только два статических файла, то, возможно, просто «действие» для каждого. если его много файлов, которые меняют имена и т. д., то вы принимаете id для перехода контроллера к модели, которая использует scandir, и проверяет file действительно exists и выплевывает ваш вывод для просмотра.

вариант 2,1 вместо папки с .htaccess вы можете также переместить файлы родителя вебхостинг базовой директории, если у вас есть этот доступ. это означает, что ваш веб-сервер не может обслуживать файл, но php все равно может использовать его с локальными путями.

вариант 3 в .htaccess вы можете использовать AuthType basic и будет вызывать ваш веб-сервер, чтобы запрашивать у пользователя имя пользователя и пароль в соответствии с настройками в файле .htaccess. это проблематично, так как интерфейс не является удобным для пользователя и очень сложно интегрировать с вашим веб-сервером 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] 
Смежные вопросы