Виртуальная Школа Веб-мастерства

Webfocus.ru


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

Из рубрики:  статьи про PHP, HTML, DHTML, Perl, CGI, Java, JavaScript, CGI, MySQL.

Каталог выше корня сайта. Использование константы. Использование .htaccess

Когда Вы пишите простенькую гостевую книгу, или счетчик, прибавляющий 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.

 
 
Автор: Дмитрий Попов 
Источник: wmate.ru

 


 
 

Регистрация | Вход


Книги по раскрутке

Графика в дизайне

Самые клевые микроволновые печи moulinex в москве. Косметика и парфюмерия оптом.
Виртуальная Школа Веб-мастерства
 
Copyright © 2006 - 2010
 
Перепечатка материалов разрешается с
обязательной ссылкой на авторство и сайт

Портал - начинающему веб мастеру, о веб дизайне, создании и раскрутке сайтов,
секреты seo, web design глазами профессионалов, дополнительно на сайте можно скачать программы, скрипты, gif-каринки, аватары, заготовки для баннеров и многое другое