Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:

Error. Page cannot be displayed. Please contact your service provider for more details. (14)


Использование опции register-globals

Поиск:
Вкратце про register_globals:
Если вы передаете скрипту какую-либо переменную (например, script.php?var1=a&var2=b), а в скрипте $var1 и $var2 оказываются пустыми, то используйте вместо этого $_GET["var1"] и $_GET["var2"].
$_GET (в ранних версиях $HTTP_GET_VARS) - для переменных, переданных методом GET
$_POST (в ранних версиях $HTTP_POST_VARS) - для переменных, переданных методом POST
$_COOKIE (в ранних версиях $HTTP_COOKIE_VARS) - для переменных, переданных через COOKIE
$_REQUEST - объединяет эти 3 массива


Подробнее:
Еще одно средство PHP для повышения безопасности - конфигурация с использованием register_globals = off. Это отключает внедрение пользовательских переменных в среду переменных программы на PHP, сводя попытки внедрения злоумышленником нужных ему значений на нет. Опция полностью изолирует внутренние переменные от предоставляемых пользователем данных.

Конечно, это немного увеличивает количество усилий, необходимых для обработки пользовательского ввода. Но все-таки игра стоит свеч, и плюсы такого подхода гораздо более существенны, нежели минусы.
Пример: Программа с register_globals=on
Код
<?php
if ($username) {  // может быть подменена пользователем в get/post/cookies
   $good_login = 1;
}

if ($good_login == 1) { // также может быть подменена пользователем в get/post/cookies
   fpassthru ("/highly/sensitive/data/index.html");
}
?>
Пример: Программа с register_globals = off
Код
<?php
if($_COOKIE['username']){
   // может прийти только из записи cookie, нормальной или поддельной
   $good_login = 1;
   fpassthru ("/highly/sensitive/data/index.html");
}
?>
Разумно используя данный метод, можно даже принять меры предотвращения подмены данных, предупреждая, когда таковая предпринимается. Если известно, где должна быть необходимая переменная, можно проверить, не идет ли она от недопустимого источника. Это не гарантирует отсутствие подмены данных, но злоумышленнику придется искать правильный путь подмены.
Пример: Простейшая проверка на подмену данных
Код
<?php
if ($_COOKIE['username'] &&
   !$_POST['username'] &&
   !$_GET['username'] ) {
   // произвести проверку имени пользователя
   $good_login = 1;
   fpassthru ("/highly/sensitive/data/index.html");
} else {
  mail("admin@example.com", "Возможна подмена данных ", $_SERVER['REMOTE_ADDR']);
  echo "Ошибка безопасности. Произведено оповещение администратора.";
  exit;
}
?>
Конечно, выключение register_globals не означает, что программа безопасна. Все входные данные все равно требуют дополнительной проверки.

Copyright © 2001-2003 The PHP Group. All rights reserved.
Материал взят с сайта www.php.net
Автор: MuToGeN
Сайт: http://mutogen.com.ru/






Просмотров: 3330

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную