Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   запрет на доступ к файлу (https://javascript.ru/forum/misc/58010-zapret-na-dostup-k-fajjlu.html)

guru_nemo 30.08.2015 18:02

запрет на доступ к файлу
 
Есть XML файл, как запретить к нему доступ из вне? в папке где он лежит есть .htaccess запрещающий её открытие. сам файл используется скриптом php в той же папке. но если запросить php скриптом файл xml с другого сайта, то его можно прочитать. как это запретить?

laimas 30.08.2015 18:11

Цитата:

Сообщение от guru_nemo
php скриптом файл xml с другого сайта

Это как?

guru_nemo 30.08.2015 19:03

подставляю адрес файла xml и он его загружает.

laimas 30.08.2015 19:26

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

guru_nemo 30.08.2015 19:54

.htaccess запрещает только прямой доступ к катологу.

laimas 30.08.2015 20:00

Как сторонний сервер получает содержимое этого файла, покажите код.

guru_nemo 30.08.2015 20:22

$dom->load('./vhod/xml_try.xml');
если в таком же файле, но на другом сайте я пишу $dom->load('http://site.ru/vhod/xml_try.xml'); то запросто читается этот файл.

laimas 30.08.2015 20:34

И это по вашему не прямой доступ? В итоге будет тот же самый GET запрос, что и из адресной строки браузера.

Скрипты сайта на котором находится xml_try.xml также получают его посредством прямого доступа, но они имеют на него права, они его владельцы. А .htaccess закрывает внешний прямой доступ, и при этом не важно чем будет сформирован url запроса.

Локальный сервер у вас есть? Создайте в одном домене, условно А, файл в закрытой папке:
.htaccess
<Files *.*>
Deny from all
</Files>

Из другого домена, условно B, попробуйте получить, можно просто:

echo file_get_contents("http://domainA/folder/file.ext");

Если на вашем локальном сервере работает .htaccess, то кроме ошибки 403 домен B ничего не получит.

guru_nemo 30.08.2015 20:48

у меня в .htaccess только прописано Options -Indexes, запрет на чтение файлов я не стал пока писать. Без использования .htaccess как-то можно это сделать?

laimas 30.08.2015 21:17

Options -Indexes - это не запрет на доступ к файлам папки, эта опция не позволяет просмотреть список файлов папки. А открыть файл при этом можно без проблем.
Как запретить доступ ко всем папкам я написал, .htaccess как раз для этого (и еще для очень много полезного) и служит.

guru_nemo 30.08.2015 21:24

если я пишу Deny from all то тогда и местные скрипты не могут открыть этот файл.

laimas 30.08.2015 21:26

Цитата:

Сообщение от guru_nemo
если я пишу Deny from all то тогда и местные скрипты не могут открыть этот файл.

Этого быть не может. Что за локальный сервер вы используете?

guru_nemo 30.08.2015 21:40

hostinger.ru т.е. в любом случае только через .htaccess?

laimas 30.08.2015 22:04

В любом случае, и это забота Apache.
Я не о имени домена спрашиваю, а о локальном сервере или вы отлаживаете скрипты на удаленном?

guru_nemo 30.08.2015 22:21

на удалённом, чтобы уж наверняка работало. спасибо за ответы.

laimas 30.08.2015 22:27

Цитата:

Сообщение от guru_nemo
на удалённом, чтобы уж наверняка работало.

Отладку скриптов производят на локальном сервере, и только после полной отладки и устранения ошибок выставляют на сервер.
Чтобы наверняка работало, нужно всего лишь иметь на локальном сервере версии PHP (или иного серверного языка), базы данных таких же версий что будут и на удаленном.

Значит на удаленном сервере не работает .htaccess (если конечно вы все правильно делаете), обращайтесь в техподдержку и прикройте на время выяснения вопроса доступ к сайту вообще.

guru_nemo 02.09.2015 14:41

помог следующий код в .htacess
<Files "*.xml">
deny from all
</Files>
может кому пригодится. все файлы .xml в папке с этим файлом .htacess стали доступны только для скриптов сайта. вместо .xml можно поставить любое расширение.

laimas 02.09.2015 14:43

Вам это ранее показывали, только на все файлы папки *.*.

guru_nemo 02.09.2015 15:15

я пробовал

order deny,allow
deny from all
allow from 195.135.232.70

поэтому, тогда подумал, что вы предлагали то же самое.

laimas 02.09.2015 16:35

Так надо о директивах .htaccess читать. А вообще, это не хорошо держать один один или файлы недоступные в папке, а не закрыть доступ к папке. Не забывайте, есть еще и robots.txt, зачем же так усложнять хранение. Уж точно есть закрытая папка на все файлы, из которой подключаются скрипты, конфигурации, разе не лучше там организовать хранение таких файлов?

guru_nemo 02.09.2015 17:16

robots.txt про это ничего не знаю. надо почитать.
в .htaccess папку я закрыл первой строкой.
Options -Indexes
<Files "*.xml">
deny from all
</Files>

laimas 02.09.2015 18:10

Если папка, содержит файлы, которые доступны только владельцу, то ее закрывают всю:
<Files "*.*">
Директива:
<Files "*.xml">
по логике своей означает, что в данной папке есть файлы других типов, которые доступны публично. И если так, то зачем?

Подключаемые файлы функций, классы, шаблоны, исполняемые файлы для cron и т.п., все это помещается в закрытые папки, а в rorbots.txt прописывается директива не индексировать данные папки. Также эти папки не отражаются в карте сайта, это ресурсы системы, а не публичные данные.

guru_nemo 02.09.2015 19:52

если закрыть таким образом файлы папки, то во вложенных в неё папках также надо размещать .htaccess с такими же директивами?

laimas 03.09.2015 10:04

Нет, действие .htaccess распространяется на все вложенные документы, включая и вложенные папки.

guru_nemo 03.09.2015 20:03

попробовал написать дерективу <Files "*.*">, перестали открываться все скрипты php. пришлось запрет сделать на конкретные расширения.

laimas 03.09.2015 20:46

Цитата:

Сообщение от guru_nemo
перестали открываться все скрипты php.

У вас неправильно организовано либо категории, либо вообще хранение файлов. Не может быть такого. Если вы закрыли по конкретным расширениям, то что, исполняемые файлы не закрыты? Ну так это дыра в безопасности.

Читайте - http://www.htaccess.net.ru/


Часовой пояс GMT +3, время: 15:02.