Главная Свежие Последние Лучшие Контактная информация  
 
 


Начнем » Безопасность: Использование Register_Globals
Использование Register_Globals
Для повышения безопасности работы PHP можно сконфигурировать PHP с опцией register_globals = off. Отключив таким образом возможность внедрения отправленных пользователем переменных в PHP-код, вы можете уменьшить количество заражённых переменных, которые потенциальный взломщик может попытаться направить вам. Для подделки отправляемой информации понадобится дополнительное время, а ваши внутренние переменные будут эффективно изолированы от отправляемых пользователем данных.

Хотя понадобятся некоторые дополнительные усилия при работе с PHP, но преимущества от этой работы с лихвой окупят эти затраты.Пример 4-14. Работа без register_globals=off
<?php
if ($username) { // может быть подделана пользователем в get/post/куках
$good_login = 1;
}

if ($good_login == 1) { // может быть подделана пользователем в get/post/куках
fpassthru ("/highly/sensitive/data/index.html");
}
?>


Пример 4-15. Работа с register_globals = off
<?php
if($_COOKIE['username']){
// может прийти только от куки, подделанной или нет
$good_login = 1;
fpassthru ("/highly/sensitive/data/index.html");
}
?>




Разумно пользуясь этим, можно даже делать предварительную проверку и предупреждать в случае попытки подделки кода. Если вы наперёд знаете, откуда должна прийти переменная, вы можете проверять, не пришли ли данные несоответствующего вида. Поскольку нет гарантии, что данные не были подделаны, взломщику необходимо придумывать нужный вид подделки.

Пример 4-16. Определение заражения простой переменной
<?php
if ($_COOKIE['username'] &&
!$_POST['username'] &&
!$_GET['username'] ) {
// выполнить проверку имени пользователя ...
$good_login = 1;
fpassthru ("/highly/sensitive/data/index.html");
} else {
mail("admin@example.com", "Possible breaking attempt", $_SERVER['REMOTE_ADDR']);
echo "Security violation, admin has been alerted.";
exit;
}
?>



Конечно, простое отключение register_globals не означает, что код безопасен. Каждый блок передаваемых данных необходимо проверять дополнительно.

Добавить в закладки:

 

теги: безопасность, register_globals
 

  Еще статьи
Массивы: array_diff 180
Переменные: Область видимости переменной 221
Массивы: key 177
Операции: Логические операции 123
Массивы: list 162
 


  Категории
Начнем 13
Справочник языка 89
Возможности 12
Функции 142
Расширение PHP 4.0 0
FAQ 0
 

  Теги
 

  Лучшее на сайте
Безопасность: Скрытие PHP 472
Что такое PHP? 446
Безопасность: Данные, отправляемые пользователем 373
foreach 354
Безопасность: Безопасность баз данных 333
Файл конфигурации 332
Операции: Строковые операции 310
Безопасность: CGI-двоичный 305
Безопасность: Безопасность файловой системы 297
Безопасность: Обзор 291
 

  Друзья сайта
 

  Интересное
 

 
Использование материалов только при активной гиперссылке "http://iamcoder.net"
Copyright 2008 http://iamcoder.net Серия сайтов: "Стань умным!".