Защита include-модулей от несанкционированного доступа на сайте
Когда Вы пишите простенькую гостевую книгу, или счетчик, прибавляющий 1,
к предыдущему значению, Вы, как правило, используете один-два файла не
связанные друг с другом. Но однажды возникает необходимость разделять
программу на несколько частей, причем одна часть вызывается другой.
Пример:
Делается форум-сервер, вроде . Если Вы заметили, там
скрипту 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.
Автор: Дмитрий Попов Источник:
Комментарии
Ваш комментарий к данному материалу будет интересен нам и нашим читателям!
Когда Вы пишите простенькую гостевую книгу, или счетчик, прибавляющий 1, к предыдущему значению, Вы, как правило, используете один-два файла не связанные друг с другом. Но однажды возникает необходимость разделять программу на несколько частей, причем одна часть вызывается другой... подробнее
В предыдущей части статьи мы рассмотрели основные принципы работы mod_rewrite. В этой статье будут рассмотрены общие случаи использования mod_rewrite и его возможностей... подробнее
Эта статья была написана мной во время разработки нового движка для сайта.
Как и все пользователи интернета, я с некоторого времени (примерно год назад) стал замечать, что все больше и больше популярных сайтов переходят от url вида http://site.net?pid=general&id=5&s=98465 на псевдостатику или на ЧПУ (Человеку Понятный УРЛ)... подробнее
Во многих информационных материалах, которые мне когда-либо приходилось читать об этом служебном файле веб-сервера Apache, говорилось, в основном, о том, как правильно сконфигурировать сервер для качественной работы сайта... подробнее
Многие начинающие веб-мастера встречаются с проблемой обработки длинных адресов в строке браузера. Например, у вас есть динамическая страница, которая обрабатывает запросы на скачивание файлов... подробнее