Дипломные работы, курсовые проекты на заказ, контрольные работы на заказ

 
Начертательная геометрия Практикум по решению задач Геометрическое черчение Инженерная графика ЕСКД Кратные интегралы Математический анализ Матрицы Пределы Производные Векторная алгебра Интегральное исчисление ТФКП Ядерная физика Электростатика Магнетизм Оптика Информационные технологии
Учебник РНР
НазадГлава 4. БезопасностьВперёд

Данные, отправляемые пользователем

Самые большие дыры во многих PHP-программах зависят не столько от самого языка, сколько от кода, написанного без учёта обеспечения безопасности. Соответственно, вы всегда должны выделять время для исследования влияний на данный участок кода, чтобы знать о возможном вреде, который может нанести отправка в него переменной с нестандартным значением.
Пример 4-17. Опасное использование переменных
<?php 
// удалить файл из домашней директории пользователя ... а может - // ещё что-нибудь? 
unlink ($evil_var); // записать логинг доступа ... или, может быть, вхождение 
/etc/passwd? fputs ($fp, $evil_var); // выполнить что-нибудь тривиальное ... или 
rm -rf *? system ($evil_var); exec ($evil_var); ?>

Вы всегда должны тщательно проверять ваш код, чтобы гарантировать, что любые переменные, отправляемые из web-браузера, соответствующим образом будут проверены, и задайте себе следующие вопросы:

  • Будет ли данный скрипт воздействовать только на предполагаемые файлы?

  • Могут ли быть обработаны необычные или нежелательные данные?

  • Может ли данный скрипт быть использован несоответствующим образом?

  • Может ли он быть использован в сочетании с другими скриптами негативным образом?

  • Будет ли выполнен адекватный логинг для каждой транзакции?

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

Возможно, вы захотите также предусмотреть отключение register_globals, magic_quotes или других установок, которые могут создать у вас неуверенность в проверке, источнике или значении данной переменной. Работа с PHP в режиме error_reporting(E_ALL) также может помочь, предупреждая вас о переменных, используемых до проверки или инициализации (что предотвратит операции с необычными данными).


Назад Оглавление Вперёд
Использование Register_GlobalsВверхСкрытие PHP