PHP статьи и уроки PHP для начинающих. Уроки по PHP.
Работа с массивами, графикой, звуком, базами данных.
Работа с протоколами на сервере HTTP и FTP.
Приветствую Вас, Гость!

Меню сайта
Категории каталога
Общие вопросы
Общие вопросы программирования на PHP
PHP в примерах
рассматриваются конкретные практические примеры скриптов PHP
Безопасность сайта
При создании сайта необходимо защитить его от несанкционированного доступа
Интересное:
Реклама:
Смотрю "Записки о MacBook и Mac OS", в блоге gamedev программиста.
Главная » Статьи » Уроки » Безопасность сайта

Использование глобальных переменных (Register_Globals)
Наверное, наиболее спорным моментом в разработке PHP стала замена значения по умолчанию для опции register_globals с ON на OFF в версии 4.2.0. Большинство пользователей доверились разработчикам, даже не зная, что это за опция и как она влияет на работу PHP. Эта страница документации призвана показать, как эта настройка сочетается с вопросами безопасности при разработке приложений.

Следует понимать, что сама по себе эта опция никак не влияет на безопасность, угрозу представляет некорректное использование предоставляемых ею возможностей.

В случае, если значение параметра register_globals ON, перед выполнением вашего кода будут инициализированы различные переменные, например, переменные, переданные при отправке формы. Также, учитывая тот факт, что PHP не требует инициализации переменных, написать потенциально опасный код очень легко. Это было очень спорным решением, но общество разработчиков PHP решило изменить значение по умолчанию этой директивы на OFF. В противном случае при написании кода разработчики не могли бы с уверенностью сказать, откуда пришла та или иная переменная и насколько она достоверна. До такого нововведения переменные, определяемые разработчиком внутри скрипта, и передаваемые пользователем внешние данные могли перемешиваться. Приведем простой пример злоупотребления конфигурационной опцией register_globals:

Пример 1. Пример опасного кода с register_globals = on

<?php
// устанавливаем переменную $authorized = true только для пользователей, прошедших авторизацию
if (authenticated_user()) {
    $authorized true;
}

// Поскольку в случае неудачи при проверке авторизации переменная $authorized 
// не установлена, она может быть установлена автоматически, благодаря register_globals,
// например, при GET запросе GET auth.php?authorized=1.
// Таким образом, пройти эту проверку можно без авторизации
if ($authorized) {
    include "/highly/sensitive/data.php";
}
?>

В случае register_globals = on логика работы скрипта может быть нарушена. В случае, если установленное значение off, переменная $authorized не может быть установлена из внешних данных запроса, и скрипт будет работать корректно. Но все же инициализация переменных - один из признаков хорошего тона в программировании. Например, в приведенном выше участке кода мы могли поместить $authorized = false в качестве первой строки. Такой код работал бы как со значением on, так и off опции register_globals, и подразумевая, что по умолчанию пользователь не проходил авторизацию.

Приведем еще один пример, использующий сессии. В случае, если register_globals = on, мы можем использовать переменную $username в приведенном ниже примере, но тогда у нас не будет уверенности в достоверности ее значения (к примеру, она могла быть передана в GET-запросе).

Пример 2. Пример использования сессий со значением register_globals on или off

<?php
// Мы не знаем, откуда получена переменная $username, но точно знаем, что
// переменная $_SESSION хранит в себе данные сессии
if (isset($_SESSION['username'])) {

    echo "Hello <b>{$_SESSION['username']}</b>";

} else {

    echo "Hello <b>Guest</b><br />";
    echo "Would you like to login?";

}
?>

Также существует возможность реализации оперативного реагирования в случае попытки подмены переменных. Так как во время разработки приложения мы знаем ожидаемое значение переменной, а также знаем ее достоверное значение, мы можем их сопоставить. Это не защитит код от подмены переменных, но усложнит перебор возможных вариантов. Если вы не хотите знать, как именно были получены внешние данные, используйте переменную $_REQUEST, которая состоит из данных GET и POST запросов, а также данных COOKIE. 

Пример 3. Обнаружение попытки подмены переменных

<?php
if (isset($_COOKIE['MAGIC_COOKIE'])) {

    // MAGIC_COOKIE получена из достоверного источника.
    // Для полной уверенности необходимо проверить ее значение.

} elseif (isset($_GET['MAGIC_COOKIE']) || isset($_POST['MAGIC_COOKIE'])) {

   mail("admin@example.com""Обнаружена попытка взлома"$_SERVER['REMOTE_ADDR']);
   echo "Обнаружено нарушение безопасности, администратор уведомлен.";
   exit;

} else {

   // MAGIC_COOKIE в данных запроса не присутствует
}
?>

Следует понимать, что установка register_globals в off не сделает ваш код безопасным. Каждую полученную от пользователя переменную следует проверять на соответствие ожидаемому значению. Всегда проверяйте ввод пользователя и инициализируйте все используемые переменные. Для проверки на наличие неинициализированных переменных можно включить в опцию error_reporting() отображение ошибок категории E_NOTICE.

Суперглобальные переменные: примечание о доступности: Начиная с PHP 4.1.0, стали доступными суперглобальные массивы, такие как $_GET, $_POST, $_SERVER и т.д. Дополнительную информацию смотрите в разделе руководства superglobals



Источник: php.su
Категория: Безопасность сайта
Просмотров: 44216 | Комментарии: 295
Всего комментариев: 2931 2 3 ... 29 30 »
293  
function of prostate
coventry medco
best club med for kids
http://florilor.com/showthread-97031/ - retin 1
retin a acne cream
drug information for nurses

292  
longs drugs website
what meds are used for schizophrenia
med 1 forms
http://elearning.cerifos.it/showthread-695781/ - sore erect nipples
how to diagnose prostate problems
meds for cholesterol

291  
I think he'll want to go for help...' An awful thought presented itself to the boy.
Midget Porno Videos
I came so hard I nearly passed out. He sat down.

290  
http://www.stalkonst.ru - hyip шаблоны

289  
tpohubeozesuy

izxblatcx@hotmail.com

288  
http://partnerkas.ru/forex-partnerki/zarabotok-na-forex-c-mmcispartners.html - Заработок на Forex c MMCISpartners
http://partnerkas.ru/partkurs/prosnites-muzhchini-ili-put-k-schastiu-i-uspechu.html - Проснитесь мужчины или Путь к Счастью и Успеху
http://partnerkas.ru/frilanseru/maketrust-servis-polucheniya-ssilok.html - MAKETRUST - Сервис получения ссылок
http://partnerkas.ru/chosting/partnerskaya-programma-ot-spaceweb.html - Партнерка хостинга
http://partnerkas.ru/partkurs/partnerskaya-programma-kurs-soblazneniya.html - Партнерская программа знакомств

287  
http://muzka.net - детектив гостевая книга clan su
http://muzka.net - лтшпф
http://muzka.net - книги про ужасы
http://muzka.net - фильмы фантастика
http://muzka.net - chitat knigu

286  
http://fam.azzah.ru/bad.php?f=%CC%EE%EB%EE%E6%E8%ED - узнать что означает фамилия Моложин

285  
Добрый день!
Давно хотел купить проволоку сварочную бухта. Вот, нашел: http://ckmt.ru/index.php?art=svarochnaya.php
Надежная компания? Цена понравилась.
Зарание спасибо за советы!

284  
Когда http://www.ingush-memory.ru/shop/category/voennie_kurtki_military/ - осенняя военная куртка вы собираетесь в поход, занимаетесь активными видами спорта, любите рыбалку или работаете в экстремальных условиях, вам стоит подкупать военную куртку. Основными особенностями, которыми обладают зимние военные куртки, являются удобство, прочность и высокое марка изготовления. Лишь военные кожаные куртки из нашего каталога способны выдержать длительную эксплуатацию, ведь они обладают повышенной износоустойчивостью и не теряют эксплуатационных характеристик в ход длительного времени.
Жанр "милитари" давнешенько приобрёл заслуженную репутация и самое широкое распространение точно принадлежность моды для женщин.
Сегодня принято разобщать два основных течения в этой стилистике: так называемый violent military ("великий милитари") и милитари вдруг разновидность стиля унисекс.
"Хай-милитари" разрабатывается кутюрье, и буквального отношения к армейской одежде не имеет. Это стилизация, обращающаяся к строгой линии, погончикам, галунам, многочисленным карманам, аксельбантам, френчам, ботинкам с высоким берцем - в общем, всему тому, что напоминает парадную военную форму какой-то сказочной армии.
Образцовый милитари жанр начинался в конце 60-х годов в США с использования реальной военной формы, её элементов и атрибутов. К примеру, армейские куртки М-65, камуфляжные солдатские штаны и берцы плотно вошли в обиход "гражданской" жизни именно тогда. Вскоре на этот вкус обратили более пристальное уважение представители индустрии моды, и ныне http://www.ingush-memory.ru/shop/category/voennie_kurtki_military/ этот дух одежды стал классическим.

1-10 11-20 21-30 ... 281-290 291-293
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Copyright Viktor L.P. © 2017 Бесплатный конструктор сайтов - uCoz
down