Статьи  : 

Безопасность include структур

2 октября 2013, 10:46

Есть принцип проектирования сайтов, когда в одном скрипте подключается ряд других, соответствующих разным страницам. Обычно это некий index.php с вот таким кодом:

switch($page)
{
	case 'news': include("news.php");
	case 'feedback': include("feedback.php");
	case 'article': include("article.php");
}


В принципе, довольно удобно. Но в таких случаях всегда нужно анализировать – а что будет, если мы обратимся к подключаемым скриптам напрямую? В одной из таких систем, с которой мы работали, авторизация и проверка доступа выполнялись в index.php. Таким образом, можно было обратиться к внутреннему скрипту, минуя проверку авторизации! В результате была возможность смотреть поступающие сообщения, заказы, клиентов и так далее.

Единственная трудность такой атаки – узнать целевые скрипты, которые подключаются в корневой скрипт. Но при должном везении и настойчивости и это возможно.

Чтобы защититься от подобной атаки, необходимо выполнять в каждом подключаемом скрипте либо проверку авторизации, либо установку некоторой переменной, которая может быть задана только из корневого скрипта.
Если ваш проект реализован аналогичным образом, и вы хотите заказать проверку его безопасности – пожалуйста, свяжитесь с нами через форму обратной связи.