Главная страница статей --> Советы по фотошопу, графике и хитрости в построении php кода

Защита include-модулей от несанкционированного доступа

Источник: realcoding.net

Когда Вы пишите простенькую гостевую книгу, или счетчик, прибавляющий 1, к предыдущему значению, Вы, как правило, используете один-два файла не связанные друг с другом. Но однажды возникает необходимость разделять программу на несколько частей, причем одна часть вызывается другой. Пример:

Делается форум-сервер, вроде 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.



Похожие статьи:
- Мультибраузерный сайт или как его сделать
- Определение IP-адреса с помощью Perl
- Подключение к базе данных с помощью JDBC
- PHP-работа с файлами
- Модуль mod_rewrite. Часть 2.
- Использование JS для создания «умных» форм
- Первоначальная настройка MySQL
- Краткий обзор некоторых возможностей MySQL. Советы по оптимизации.
- Поиск - простой и видимый
- Правила написания сообщений об ошибках
- PHP gzip module
- Применение cURL и libcurl в php
- Регулярные выражения, Часть I


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |

Контакты
Редакция:
[0.001]