Я устанавливаю последнюю версию PHP на IIS 7.5 через FastCGI, и все инструкции говорят, что FastCGI должен олицетворять вызывающего клиента, установив
fastcgi.impersonate = 1
Если у моего сайта будет такая конфигурация
почему я хочу выдать себя за другое лицо?
Я пришел из фона ASP.NET, где IUSR получает разрешения только для чтения, а удостоверение пула приложений - любые разрешения на запись. Предоставление доступа на запись к IUSR обычно открывает двери для уязвимостей WebDAV. Поэтому я не решаюсь позволить PHP работать как IUSR.
Я не могу найти много людей, задающих этот вопрос (1 | 2) так что я думаю, что мне что-то не хватает. Может кто-нибудь прояснить это для меня?
13 месяцев спустя я хотел вернуться к своему собственному вопросу. За это время я перевел полдюжины веб-сайтов с IIS 6 на IIS 7.5 и настроил их с помощью своего предпочтительного метода. Все, что я могу сказать, это то, что веб-сайты работают, у них не было никаких проблем с безопасностью (не то чтобы это популярные сайты), и, на мой взгляд, настройка более безопасна, чем то, что рекомендует learn.iis.net.
Для потомков вот соответствующие настройки. В PHP INI:
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 0
В IIS:
Разрешения NTFS и где их применять:
move_uploaded_file
сохранит разрешения каталога загрузки. Это самый большой недостаток данной настройки разрешений, который я обнаружил.IIS AppPool\<<YourApplicationPoolName>>
) - Предоставить чтение и список upload_tmp_dir
, session.save_path
, и error_log
.Я надеюсь, что это поможет любому, кто решит, что инструкции learn.iis.net не идеальны.
Видеть: http://www.php.net/manual/en/install.windows.iis6.php
Выдача себя за другое лицо и доступ к файловой системе
При использовании IIS рекомендуется включить олицетворение FastCGI в PHP. Это контролируется директивой fastcgi.impersonate в файле php.ini. Когда олицетворение включено, PHP будет выполнять все операции файловой системы от имени учетной записи пользователя, которая была определена аутентификацией IIS.
Согласно документации, он просто позволяет fastcgi действовать от имени клиента, используя все те же разрешения (в вашем случае это то, что выглядит как учетная запись IUSR). Другими словами, выполнять все действия, которые обычно разрешены для собственных учетных данных клиента (или пользователя). Ни больше ни меньше. Думаю, без этого набора бедный fastcgi остался бы инвалидом.