Межсетевое экранирование



              

Уязвимости технологий создания содержимого на стороне сервера - часть 5


РНР обычно используется для извлечения данных из базы данных и представления их на web-странице. Большинство web-серверов на Windows и Unix поддерживают данный язык, и он широко применяется вместе с базой данных MySQL. Некоторые проблемы, которые следует учитывать при разработки на РНР:

  • старые версии РНР имеют многочисленные уязвимости безопасности, нужно использовать самую последнюю версию;

  • большие возможности конфигурирования, что может вызвать у новичков трудности, касающиеся безопасности;
  • большинство свободно доступных кодов третьих фирм плохо написаны с точки зрения безопасности.

При анализе или написании выполняемого активного содержимого или скрипта следует рассмотреть следующие вопросы:

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

  • проанализировать взаимодействие кода с другими программами или приложениями. Например, многие CGI-скрипты посылают e-mail в ответ на ввод данных формы, открывая соединение с программой sendmail. Гарантировать, что такое взаимодействие выполняется безопасным способом;

  • на Linux/Unix-хостах код должен выполняться без установленного бита suid;

  • код должен использовать полные имена пути при вызове внешних программ. Полагаться на переменную окружения PATH для определения части имени пути не рекомендуется, так как она может быть модифицирована атакующим, в результате чего может выполниться программа атакующего, которая была им вставлена в какой-либо каталог;

  • web-серверы (даже если они не используют активное содержимое) должны периодически сканироваться относительно наличия уязвимостей;

  • для данных формы следует определить список допустимых символов и фильтровать все остальные символы из введенных данных до того, как будет обработана форма.


    Содержание  Назад  Вперед