WWW.MOBILA.FARX.RU
 Веб-Мастеру
PHP и безопасность программ
 Погода

» Создание сайта
» Бесплатный хостинг
» Бесплатная почта
» Дизайн сайта
» Раскрутка сайта 1
» Раскрутка сайта 2
» Программирование
» База белых каталогов
» Статьи

 E-Money
» Электронные деньги
» WebMoney
» E-gold
» Liberty Reserve
» RuPay
» Обменные пункты
 Заработок

» Начинающим
» Компания DepositFiles
» Основные вопросы
» Спонсоры(САР)
» Серфинг и автосерфинг
» MLM проекты
» Инвестиции
» Веб-мастеру
» Букмекерские конторы
» Моментальные бонусы
» Введение в коммерцию
» Всё о коммерции
» Статьи о заработке
» Форумы о заработке

 Идеи бизнеса
» Часть 1
» Часть 2
» Часть 3
» Часть 4
» Часть 5
» Часть 6
» Часть 7
» Часть 8
» Часть 9
» Часть 10
» Часть 11
» Часть 12
 Реклама
Яндекс.Погода
 Реклама

 Я использую понятия безопасности и защищённости как одинаковые, хотя это конечно не одно и то же.

Важно понимать, что PHP не является защищённым или не защищённым языком программирования. Защищённость или безопасность ваших internet-программ определяется только их кодом.

Глобальные переменные и формуляры.

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

В PHP очень легко убедиться, является ли переменная опасной или нет. Если в php.ini флаг register_globals установлен в on (активирован), то PHP автоматически генерирует переменные из параметров формуляра и куков (cockies). Плохо разработанные программы исходят из того, что переменные только тогда имеют значения, когда эти значения явно заданы. В случае register_globals = on, это предположение может быть ошибочным.

Рассмотрим следующий код:

<?  if (methode_check()) {  $my_var = true;  }  // ...  ?>  

Очевидно, что в этом коде мы исходим из того, что переменная $my_var принимает значение true только в том случае, если функция methode_check() так же возвращает true.

Однако в случае register_globals = on, достаточно выполнить для этой страницы page.php?my_var=1 что бы обеспечить работу программы со значением $my_var = true вне зависимости от возвращаемого значения функцией methode_check().

В настоящий момент в PHP существует три возможности решить эту проблему:
- инициализация переменных;
- установить значение флага register_globals в off
- настроить значение variables_order и правильно использовать в вашем коде глобальные переменные

Инициализация переменных

Всегда инициализируйте переменные. При этом дырка, показанная в примере выше, была бы закрыта вот так просто:

<?  $my_var = false;  if (methode_check()) {  $my_var = true;  }  // ...  ?>  

В случае, если конфигурационное значение error_reporting в php.ini установить в E_ALL, то будет обеспечено сообщение о том, что сценарий содержит переменные, которые не проинициализированы.

Так к примеру это может выглядеть:

<?
echo $a;
?>

Сообщение сценария:

Notice: Undefined variable: a in c:\myserver\apache\htdocs\test.php on line 2

Конечно же когда программа готова, открытые сообщения обо всех ошибках и информационные сообщения должны быть деактивированы, в противном случае эта информация можеть открыть дополнительные возможности для снижения безопасности, или попросту, для взлома программы. Следующие директивы php.ini рекомендуются для рабочих программ:

display_errors = Off
log_errors = On
error_log = C:/myserver/apache/log/php_errors.log

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

На этом первую статью о безопасности я завершаю, так как время позднее. Продолжение конечно будет. А именно я расскажу (исходя из возможных путей для повышения безопасности программ) о variables_order, как выбирать имена файлов для сценария, о проверке относительных путей, об ограничении доступа к определённым папкам и многом другом.

Дизайнер сайта: Лазаренко Виталий Сергеевич E-Mail:lazarenko-vitalik@xaker.ru ICQ: 397-116-997
Использование материалов сайта возможно только с разрешения администрации.

Все права защищены. WEBMSX.NAROD.RU - Работа в интернете © 2008
CY and PR Rambler's Top100 Рейтинг@Mail.ru