П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 3511 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6115 раз(а).

Учебник HTML.
Просмотров 3268 раз(а).

Руководство по PHP5.
Просмотров 5491 раз(а).

Хостинг через призму DNS.
Просмотров 4129 раз(а).

Подборка текстов стандартных документов.
Просмотров 55769 раз(а).

Учебник PHP - Самоучитель
Просмотров 3084 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 5612 раз(а).

Внешние атаки...
Просмотров 3834 раз(а).

Учебник PHP.
Просмотров 2821 раз(а).

SSI в примерах.
Просмотров 37458 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Учебник РНР
НазадГлава 4. Безопасность Вперёд

Использование 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 не означает, что код безопасен. Каждый блок передаваемых данных необходимо проверять дополнительно.


Назад Оглавление Вперёд
Сообщение об ошибке ВверхДанные, отправляемые пользователем


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru