Новые книги

Этан Цукерман, директор Центра по изучению гражданских медиа при Массачусетском технологическом институте (MIT), интернет активист и блогер, в своей дебютной книге описывает как социальные сети, транспортные хабы и новые информационные технологии, изменяют нашу жизнь. Новый взаимосвязанный мир функционирует не совсем так, как представляют себе технооптимисты и колумнисты специализированных изданий, но тем не менее он уже существует, и научиться жить в нем, адекватно используя интернет и прочие инструменты во благо, а не во вред, – задача, которая стоит сегодня необычайно остро.
В книге изложены особенности популярных рекламоносителей, рассмотрены основные принципы медиапланирования. На основе отечественного и зарубежного опыта автор подробно и доступно объясняет, что необходимо для создания оптимальной концепции рекламной кампании, как разработать эффективный план размещения рекламы и какие необходимы методы тестирования результатов. Книга будет полезна сотрудникам рекламных отделов компаний, средств массовой информации и рекламных агентств. Кроме того, книга представляет интерес для студентов и преподавателей дисциплин, связанных с рекламной деятельностью.

Использование Register_Globals

Учебник РНР
НазадГлава 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("[email protected]", "Possible breaking attempt", $_SERVER['REMOTE_ADDR']);
   echo "Security violation, admin has been alerted.";
   exit;
}
?>

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


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