Есть два типа атак, опасность которых возникает при установке РНР как двоичного модуля CGI:
♦ Доступ к системным файлам
♦ Доступ к защищенным документам веб-сайта
Доступ к системным файлам можно получить путем запроса страницы http:/ /http://www.mydomain.com/cgi-bin/php2/etc/passwdS"> www.mydomain.com/cgi-bin/php2/etc/passwdS > результате РНР проанализирует и выведет содержимое файла /etc/passwd, чего явно делать нельзя. Дело в том, что веб-сервер передает / etc/passwd PHP в качестве первого аргумента, заставляя РНР предположить, что /etc/passwd - сценарий, который должен быть выполнен. Конечно, в /etc/passwd нет кода РНР, поэтому он прямо выводится в броузер атакующего.
Доступ к защищенным документам можно получить, запросив URL http://www.mydomain.com/cgi-bin/php/some/protected/file.html"> www.mydomain.com/cgi-bin/php/some/protected/file.html. Этот запрос обходит механизмы защиты веб-сервера и выводит содержимое .com/some/protected/file.htr Это происходит потому, что РНР не запрашивает файл у веб-сервера, а непосредственно открывает его в файловой системе.
В РНР есть ряд параметров, с помощью которых можно предотвратить такие атаки. Если скомпилировать РНР с опцией -enable-force-cgi-redirect, то РНР не будет принимать запросы непосредственно к синтаксическому анализатору. Ограничить права доступа РНР можно также директивами конфигурации doc_root и user_dir.
Опция конфигурации -enable-force-cgi-redirect только с Apache, и
ее работа с другими серверами не гарантируется. Она основана на установке Apache нестандартной переменной CGI REDIRECT_STATUS. При работе с сервером, отличным от Apache, узнайте у его производителя, работает ли эта опция.
Еще один способ сделать установку более безопасной состоит в том, чтобы поместить анализатор РНР вне корневого веб-каталога. Хорошим местом для него будет Недостаток в том, что придется помещать
в начало файлов строку:
#!/path/to/php
Благодаря этой строке веб-сервер будет знать, где найти анализатор РНР. Кроме того, потребуется сделать файлы сценариев исполняемыми. Чтобы заставить РНР правильно работать с переменными PATH_INF0 и PATH_TRANSLA- TED, задайте при компиляции опцию -enable-discard-path.
Настройка РНР
В файле содержатся различные параметры, с помощью которых
можно повысить защищенность РНР, ограничив его возможности доступа. Ниже описаны те параметры, которые, скорее всего, будут использованы с этой целью.
display_errors