Из рубрики: статьи про PHP, HTML, DHTML, Perl, CGI, Java, JavaScript, CGI, MySQL.
Каталог выше корня сайта. Использование константы. Использование .htaccess
Когда Вы пишите простенькую гостевую книгу, или счетчик, прибавляющий 1, к предыдущему значению, Вы, как правило, используете один-два файла не связанные друг с другом. Но однажды возникает необходимость разделять программу на несколько частей, причем одна часть вызывается другой.
Каталог выше корня сайта. Использование константы. Использование .htaccess
Когда Вы пишите простенькую гостевую книгу, или счетчик, прибавляющий 1, к предыдущему значению, Вы, как правило, используете один-два файла не связанные друг с другом. Но однажды возникает необходимость разделять программу на несколько частей, причем одна часть вызывается другой.
Пример:
Делается форум-сервер, вроде www.xpoint.ru. Если Вы заметили, там скрипту forum.cgi присваивается очень много действий: от просмотра сообщений, до отправки личных сообщений. В таких ситуациях используются различные скрипты, каждый из которых отвечает за свое действие. А главный скрипт, в зависимости от действия вызывает тот или иной модуль при помощи конструкции include (или recure).
Но такие файлы не должны вызываться самостоятельно, а только из главного скрипта. Вот здесь мы и покажем три основных способа защиты их от запуска.
Делается форум-сервер, вроде www.xpoint.ru. Если Вы заметили, там скрипту forum.cgi присваивается очень много действий: от просмотра сообщений, до отправки личных сообщений. В таких ситуациях используются различные скрипты, каждый из которых отвечает за свое действие. А главный скрипт, в зависимости от действия вызывает тот или иной модуль при помощи конструкции include (или recure).
Но такие файлы не должны вызываться самостоятельно, а только из главного скрипта. Вот здесь мы и покажем три основных способа защиты их от запуска.
Каталог выше корня сайта
Самый простой способ - просто положить скрипты выше каталога www. Т.е. допустим, у Вас выделено место в каталоге /home/youhost.host/htdocs/. Каталог htdocs здесь является корнем сайта (не путать с корнем сервера). Тогда положите ваши скрипты в каталог /home/yourhost.host/ . И все! Из браузера Ваши скрипты будет не возможно увидеть.
Использование константы
Опять же несложный способ - использование функции define(). Просто напишите в главном файле (который вызывает модули) такую строчку (например):
define("INDEX", "yes");
А в первой строке (по крайней мере до того как начнется чего-то важное) напишите следующую строку:
if(!defined("INDEX")) die("Вы не имеете права на работу с этим файлом");
Все! Теперь при любой попытке запустить такой файл напрямую будет выводиться надпись "Вы не имеете права на работу с этим файлом", а сам скрипт выполняться не будет.
Как это работает?
Функция define создает константу INDEX. Далее выражение if при помощи другой функции Defined проверяет наличие предопределенной константы, и в случае если константа неопределенна, выводит сообщение об ошибке и прерывает выполнение скрипта.
Использование .htaccess
Здесь есть очень много различных способов защиты всех внешних запусков. Суть у них одна. Создайте в папке с такими файлами-модулями файл .htaccess и пропишите:
<Files ~ "*.*">
Order allow,deny
Deny from all
</Files>
Все. Ни кто с наружи эти файлы запустить не сможет. Можете написать примерно такую строчку:
<Files ~ "^\_">
Order allow,deny
Deny from all
</Files>
И называть все файлы-модули начиная с _ (_emter.php; _admin.php и т.п.).
Вообще с .htaccess можно сделать очень многое, и здесь я рекомендую обратиться к литературе по Apache.
Автор: Дмитрий Попов
Источник: wmate.ru
| < Предыдущая | Следующая > |
|---|