Попытка защитить паролем URL с помощью htaccess - PullRequest
0 голосов
/ 23 мая 2011

Я использую Expression Engine 2 Freelancer editon, у которого нет модуля аутентификации.

Я пытаюсь защитить паролем группу шаблонов с виртуальным каталогом www.domain.com / template

То, что я пытаюсь сделать, это использовать htaccess в корне, чтобы заставить людей вводить имя пользователя и пароль, когда они пытаются перейти к разделу «template» и двум файлам под ним.

Способ, которым Expression Engine работает с шаблонами, а не с физическими каталогами.

Мой вопрос: как мне защитить этот URL паролем, я пытался использовать LocationMatch, но он не работал?

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 мая 2011

Какой метод удаления index.php из URL вы используете?

Если вы используете метод " Проверка файлов и каталогов ", вы можете изменить стандартное правило Apache mod_rewrite, чтобы исключить определенный каталог, и в то же время разрешить выполнение всех других запросов через * 1007. *.

Например, используя базовое правило перезаписи «Проверка файлов и каталогов»:

<IfModule mod_rewrite.c>
    RewriteEngine On 
    RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ /index.php/$1 [L] 
</IfModule>

С помощью этого метода Apache проверяет, существует ли файл или каталог - если он это делает, файл передается в браузер; если он не существует, он отправляется через index.php и анализируется как ExpressionEngine URI .

Чтобы исключить ваш каталог, измените правило перезаписи, добавив ваш .htaccess Basic аутентифицированный защищенный паролем каталог :

<IfModule mod_rewrite.c>
    RewriteEngine On 
    RewriteCond %{REQUEST_URI} !^/(secret-directory|secret-directory/.*)$
    RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ /index.php/$1 [L] 
</IfModule>

Я не до конца осознаю, каковы все ограничения с Freelancer License , но я ответил на аналогичный вопрос о страницах защиты паролем в ExpressionEngine , которые могут оказаться полезными в ваша ситуация.

0 голосов
/ 23 мая 2011

Вы не можете эффективно защитить URL-адрес mod_rewritten (если это вообще возможно). Злоумышленнику просто нужно получить доступ к физическому местоположению, в которое перезаписывается защищенный URL-адрес, который в этом случае вы бы оставили незащищенным.

Думаю, вам все равно придется делать это на стороне PHP. Если ваш PHP работает как модуль Apache, должна быть возможность проверить, принадлежит ли запрошенный ресурс к защищенному каталогу (либо через QUERY_STRING, либо через какой-либо другой индикатор), а затем отправить соответствующие заголовки, запрашивающие аутентификацию, как описано здесь в руководстве по PHP.

...