Forum Webscript.Ru

Программирование => Perl => Тема начата: Evgeny от 05 Июля 2002, 11:44:34

Название: Скрыть файл данных.
Отправлено: Evgeny от 05 Июля 2002, 11:44:34
Привет всем.
Подскажите пожалуйста, есть ли какое-нибудь стандартное решение следующей проблемы:
Допустим cgi-скрипт для общего пользования имеет имя http://my_adress.com/dbview/script.cgi
Файл данных mydata.txt для этого скрипта лежит в этом же каталоге и соответственно всем пользователям должно быть разрешено читать этот файл. Но тогда пользователь набирает в адресной строке http://my_adress.com/dbview/mydata.txt и получает этот файл. Нехорошо.
Есть ли какое-нибудь решение кроме того, чтобы сохраниять фйлы данных в неподконтрольные web-серверу каталоги.
Спасибо.
Название: Скрыть файл данных.
Отправлено: YA от 05 Июля 2002, 11:59:54
Вообще от настройки сервера зависит... Но в большинстве случаев достаточно для файла mydata.txt  выставить права "600", твой скрипт будет его нормально читать и писать в него, а из броузера его никто не откроет.

Другой вариант, более универсальный - запрети доступ к этому файлу в .htaccess
Название: Скрыть файл данных.
Отправлено: YA от 05 Июля 2002, 12:04:42
И еще, у многих отстойных хостеров, которые не дают использовать .htaccess, можно сделать имя файла данных, начинающимся с точки - никому постороннему сервер его не отдаст :)

В общем, вариантов много.
Название: Скрыть файл данных.
Отправлено: Evgeny от 05 Июля 2002, 12:38:58
600 не работает, скрипт не может его открыть, "нет прав" говорит.
Файл с именем, где вначале точка стоит, отдал мне сервер.
Осталось .htaccess.
Чего в нём писать то надо?
Название: Скрыть файл данных.
Отправлено: Kostya от 05 Июля 2002, 14:11:34

    Order allow,deny
    Deny from all

Запретит все *.txt
Название: Скрыть файл данных.
Отправлено: Evgeny от 05 Июля 2002, 14:35:08
Цитировать

Order allow,deny
Deny from all

Запретит все *.txt


Не запрещает... :(
Проверь, может ты ошибся где-то в коде, я тут ничего пойму.
Название: Скрыть файл данных.
Отправлено: AliMamed от 05 Июля 2002, 15:00:45
а не проще этот файл данных положить в каталог, который через веб недоступен?
Название: Скрыть файл данных.
Отправлено: Evgeny от 05 Июля 2002, 15:19:17
Цитировать
а не проще этот файл данных положить в каталог, который через веб недоступен?

Физически проще, но тогда уже теряется логика. Хорошо, когда всё упорядочено, каталоги ведь для того и существуют...
Название: Скрыть файл данных.
Отправлено: YA от 05 Июля 2002, 15:31:13
Цитировать
600 не работает, скрипт не может его открыть, "нет прав" говорит.
Ну значит так настроили :(

Цитировать

Order allow,deny
Deny from all

Запретит все *.txt
Ничего подобного!


deny from all

- для всех txt-файлов

или


deny from all

- для конкретного файла

А "Order" в таком простом случае ничего не дает.
Название: Скрыть файл данных.
Отправлено: Evgeny от 05 Июля 2002, 16:10:11
Цитировать

deny from all

- для всех txt-файлов

или


deny from all

- для конкретного файла


Есть! Наконец заработало!
А чем отличаются директивы Files и FilesMatch ?
А что ещё в этот .htaccess писать можно. Про пароли знаю.
Где можно об этом почитать?
Название: Скрыть файл данных.
Отправлено: NeoNox от 05 Июля 2002, 16:31:31
Цитировать
Где можно об этом почитать?

Например, начни с http://www.host.ru/art/0007.html и далее по ссылкам.
Название: Скрыть файл данных.
Отправлено: YA от 05 Июля 2002, 17:15:54
Цитировать
Есть! Наконец заработало!
Заметил неточность: первый мой вариант должен заканчиваться не на

а на
Название: Скрыть файл данных.
Отправлено: YA от 05 Июля 2002, 17:27:39
Цитировать
А чем отличаются директивы Files и FilesMatch ?

Если в двух словах: и та и другая директива устанавливает соответствие для файлов. Примеры:
- конкретный файл
- все txt-файлы (кстати, в твоем случае, это лучше)
- то же самое, только с использованием регулярных выражений. Однако, если нужны регулярные выражения рекомендуется использовать FilesMatch (больше они ни чем не отличаются):
- то же самое
Цитировать
Где можно об этом почитать?

Только что отвечал:
http://forums.webscript.ru/showthread.php?s=&threadid=6729&msgnum=2