|
|
|
| Зачастую скрипт состоит из нескольких файлов, которые инклудятся в нужном порядке. При этом остается неизвестным, что произойдет, если инклудящиеся части запустить самостоятельно. Как я вычитал на одном из форумов, этим нередко пользуются злоумышленники для нанесения вреда сайту.
Можно ли сделать так, чтобы скрипты, входящие в состав страниц сайта, открывались бы только вместе с этими страницами, но не запускались бы самостоятельно?
Может быть, это решается установкой прав доступа?
Каких? | |
|
|
|
|
|
|
|
для: Владимир55
(07.02.2009 в 12:08)
| | Можно вынести эти файлы за пределы каталога public_html (www) или объявить в главном файле константу, а в файлах страниц проверять её существование. | |
|
|
|
|
|
|
|
для: ChieFSS
(07.02.2009 в 12:15)
| | да, это хорошая идея.
Вероятно, ещё можно разместить эти файлы в запароленной папке - ведь для вызова со стороны сервера пароль не потребуется.
А с правами доступа - никак? | |
|
|
|
|
|
|
|
для: Владимир55
(07.02.2009 в 12:34)
| | Закройте папку подключаемых файлов посредством .htaccess. | |
|
|
|
|
|
|
|
для: Владимир55
(07.02.2009 в 12:08)
| | А если так?
if (eregi('имя_этого_файла.php', $_SERVER['PHP_SELF'])) die('Не хулюганить!');
|
| |
|
|
|
|
|
|
|
для: Yuriev
(07.02.2009 в 13:06)
| |
if (__FILE__!=$_SERVER['PHP_SELF'])) die('Не хулюганить!');
|
| |
|
|
|
|
|
|
|
для: Loki
(07.02.2009 в 22:40)
| | Только $_SERVER['PHP_SELF'] хорошо бы через basename() пропустить. Все-таки наиболее рациональный и надежный вариант - выделение включаемых файлов в отдельную директорию и закрытие к ней доступа. | |
|
|
|
|
|
|
|
для: Владимир55
(07.02.2009 в 12:08)
| | Это делается очень просто. Нужно поставить замки. В файле, к которому подключается так:
а в самом начале подключаемых так:
<?
if(!$key_include)
exit("Шиш.");
|
| |
|
|
|
|
|
|
|
для: Николай2357
(08.02.2009 в 07:41)
| | Нужно просто помещать такие файлы в отдельную папку, в .htaccess которой прописать:
Deny from all
и ничего не выдумывать. | |
|
|
|
|
|
|
|
для: sim5
(08.02.2009 в 08:39)
| | Не всегда так. Бывает что нужно "засекретить" уже готовую структуру, и довольно не маленькую. Переписывать все пути в инклудах довольно геморрно, а это можно сделать одним движением. | |
|
|
|
|
|
|
|
для: Николай2357
(08.02.2009 в 09:42)
| | Нет таких трудностей, которые невозможно преодолеть, зато потом не придется лишним заниматься. А переписть что-то однотипное, даже в большом количестве файлов, это уж и не такая проблема. | |
|
|
|
|
|
|
|
для: sim5
(08.02.2009 в 10:09)
| | >Нет таких трудностей, которые невозможно преодолеть
Нету, кто же спорит... Просто не обязательно эти трудности создавать, когда можно найти более простое решение. Вот к примеру модульная структура. Есть файл - диспетчер, который подключает модули приложения. Файлы модуля находятся в своих директориях, со своим диспетчером. В них же находятся файлы и директории, которые не нужно защищать, а как раз наоборот. Допустим каталог со скачиваемыми файлами или исполняемые скрипты. Если такой .htaccess положить в корень модуля, всё испортится. А если разнести модуль по каталогам - пропадет смысл модульной системы. Можно перекроить весь модуль, но тогда его структура не будет прозрачной. А если он состоит еще из нескольких, то вообще путаница. | |
|
|
|
|
|
|
|
для: Николай2357
(08.02.2009 в 10:43)
| | Я говорю о том, что те, что подключаем (скрипты) защищать, и от этого ничего не рухнет. Да собственно нужно всегда обдумывать все заранее, а не рассовывать куда непопадя (вот это и есть создание трудностей). Хотя исключения всегда бывают. | |
|
|
|
|
|
|
|
для: sim5
(08.02.2009 в 10:57)
| | Всё приходит с опытом.
Если для устранения допущенной шероховатости приходится переделывать сложные скрипты, а потом несколько дней их проверять и подстраивать, то в этой технической работе буквально тонешь...
А если таких шероховатостей много, то просто ходишь по кругу.
И в такой ситуации простота устранения огрехи делается самом ценным качеством.
Абсолютно любой скрипт, который уже совершенно готов, после его завершения хочется переделать с целью упрощения и улучшения.
У Вас не так? | |
|
|
|
|
|
|
|
для: Владимир55
(08.02.2009 в 11:32)
| | Как сказать. Планируя проект, лучше обдумать сразу то, что будет не доступно извне, а значит просто закрыто. Если есть с этим проблемы в уже готовом, то подумать сразу - может есть смысл потратить немного времени и внести изменения один раз, чтобы в последствии не "держать в уме" проблему. Я поступаю так, хотя это совсем не обязательно единственное решение. | |
|
|
|