Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как ограничить доступ к файлу или файлам с помощью .htaccess?

Автор вопроса: ThNОтветов: 4

Я хочу ограничить доступ к файлу или файлам с помощью файла .htaccess. По сути, никто не должен иметь возможность загружать файл (ы), используя прямую ссылку на файл. Однако файл должен быть доступен с моего веб-сайта.

Например, скажем, у меня есть файл под названием Presentation.ppt. Я хочу, чтобы посетитель имел доступ к нему через мой веб-сайт, но если они попытаются загрузить его или получить к нему доступ по прямой ссылке, сервер должен отклонить запрос.

Можно ли это сделать с помощью .htaccess?

Заранее спасибо,

  • Когда вы говорите через мой веб-сайт, что именно вы имеете в виду? Использует ли ваш сайт особые формы телепатии, а не URL-адреса для доступа к файлу? Lior Cohen 28.09.2012
  • @LiorCohen, нет, сэр. Я имею в виду, что этот файл должен быть доступен только через мою веб-страницу или файл (ы) HTML, а не через URL-адрес прямой ссылки. ThN 28.09.2012

filewebserver

Ответы

Ответ 1 · рейтинг 1 · nunzabar

Вы можете запретить доступ к каталогу для каждого IPA, кроме сервера:

<Directory /dir/of/presentation>
    Order Allow,Deny
    Allow from 127.0.0.1
    Deny from All
</Directory>

Как вы отметили, эта дурацкая работа.

Как насчет использования Mod Rewrite с правилом, которое отображает / dir / of / presentation / * на запрещенную страницу. Тогда прямая ссылка работать не будет. Запрос на http://site/content/presentation.ppt
может быть перенаправлен на http://site/forbidden.html

Внутри вы можете сделать ссылку на http://authorizedRequest/presentation.ppt сопоставить с http://site/content/presentation.ppt

Это просто безопасность через безвестность. Это не помешает кому-либо ввести ваш "секретный" URI напрямую в браузер.

Ответ 2 · рейтинг 1 · Jon Lin

Можно ли это сделать с помощью .htaccess?

Это возможно, но есть способы обойти это. Вам нужно проверить ссылку, отправленную браузером, но любой может подделать это, а иногда браузер может даже не включать ссылку.

Если вы пытаетесь защитить файл Presentation.ppt, поместите эти правила в файл htaccess в корне вашего документа:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^(https?://)?your_website.com
RewriteRule ^/?path/to/Presentation.ppt - [L,F]

Если вы хотите защитить папку /path/images/, тогда:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^(https?://)?your_website.com
RewriteRule ^/?path/images - [L,F]

Ответ 3 · рейтинг 1 · ThN

Спасибо всем за ответы. Я испробовал все ваши предложения, но все равно не смог заставить их работать. Однако я нашел решение, которое действительно работает.

Шаг 1. Отключите или отключите индексы параметров на своем веб-сервере, удалив индексы слов, оставив все остальное без изменений. В некоторых случаях это можно сделать с помощью файла .htaccess. Если вы не можете сделать это с помощью .htaccess, вам придется искать файл httpd.conf на своем сервере. Обычно он находится в etc / apache / httpd.conf или etc / httpd / conf / httpd.conf. Как только вы его найдете, отключите эту опцию там.

Шаг 2: Создайте папку в папке своей веб-страницы и назовите ее как хотите, но убедитесь, что ее сложно угадать или что она очевидна (например, Joe33CompanyOCT2MeBoss). Затем переместите в эту папку файлы, которые вы хотите скрыть или защитить от посетителей.

Шаг 3. В файле robot.txt запретите всем ботам или сканерам индексировать вашу папку или файлы в этой папке, введя "Запретить имя вашей папки".

Шаг 4: Затем вам нужно будет создать файл PHP, используя аналогичный приведенный ниже код. Приведенный ниже код приведет к принудительной загрузке.

        $File1 = 'http://yourwebsite.com/Joe33CompanyOCT2MeBoss/Presentation.ppt';
        header("Content-Disposition: attachment; filename=\"".basename($File1)."\"");
        header("Content-Type: application/force-download");
        ob_end_clean();
        flush();
        readfile($File1);
        exit;

Таким образом, прямой путь к файлу скрыт от вашего посетителя, и даже если они могут загрузить файл напрямую, они просто не знают фактического URL-адреса файла, потому что код принудительной загрузки php не показывает фактический путь к файлу. Итак, теперь мои посетители моего веб-сайта должны пройти через мою веб-страницу для загрузки этого файла, а не напрямую.

Следующие вопросы о stackoverflow очень помогли мне решить мои проблемы с программированием. Спасибо,

Как автоматически начать загрузку в PHP?

принудительная загрузка файла php

Ответ 4 · arkascha

Самый простой (хотя и небезупречный) - перенаправить пользовательский агент, когда HTTP_REFERER неверен. Это можно сделать с помощью mod_rewrite в конфигурации сервера или (второй вариант) внутри файла, подобного .htaccess. Это помогает против простого хотлинкинга (ссылки, ссылающиеся на ваш файл по URL-адресу).

Вы должны прочитать прекрасную документацию по моапачам d_rewrite.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы