Заглушки .htaccess для защиты сайта с помощью аутентификации сессии php - PullRequest
2 голосов
/ 31 марта 2012

Я пытаюсь создать сайт, где авторизованные пользователи могут скачивать PDF-файлы ... PDF-файлы находятся в webroot-аутентификации по php-сессиям ...

чтобы защитить файлы от хотлинкинга, я нашел рабочее решение

PHP: при успешном входе в систему напишите новый файл с именем session id:

if($logged_in) {
    touch('auths/' . session_id());
}

, тогда .htaccess проверяет, существует ли файл идентификатора сеанса, если файл не существует, его перенаправляет для входа в систему ..

# checks if a file named 
RewriteCond %{HTTP_COOKIE} PHPSESSID=(\w+)
RewriteCond %{DOCUMENT_ROOT}/auths/%1 -f
RewriteRule ^(.*)$ $1
RewriteRule /* /login.php [L]

Пока это работает, сделал простую среду тестирования ....

Проблема заключается в том, что его необходимо объединить с приложением cakephp, которое использует следующий файл .htaccess:

# CakePHP
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
</IfModule>

Итак, мой вопрос, как можно изменить .htaccess, чтобы проверить, является ли запрос * .pdf и работает ли он вместе с правилами cakephp ...

Спасибо !!

1 Ответ

0 голосов
/ 11 апреля 2014

Не думаю, что объединение .htaccess и CakePHP пойдет хорошо.Оба являются различным видом программного обеспечения и не имеют собственного метода связи.Пока вы не напишите свой собственный модуль для Apache, я не думаю, что вы сделаете хорошее решение.На вашем месте я предпочел бы прочитать весь файл в переменную, чем распечатать его с соответствующим заголовком.Решение, требующее больших затрат памяти, но безопасное, независимое от сервера и довольно простое для изменения в будущем.

...