Через 13 місяців я хотів переглянути власне питання. За цей час я переніс півдесятка веб-сайтів з IIS 6 на IIS 7.5 і налаштував їх за своїм бажаним методом. Все, що я можу сказати, - це те, що веб-сайти працюють, у них не було проблем із безпекою (не те, що це популярні сайти), і на мій погляд, налаштування є більш безпечною, ніж те, що рекомендує learn.iis.net.
Щодо нащадків, ось відповідні налаштування. У PHP INI:
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 0
У IIS:
- Пул програми> Ідентичність> ApplicationPoolIdentity
- Веб-сайт> Автентифікація> Анонімна автентифікація> Конкретний користувач: IUSR
Дозволи NTFS та де їх застосувати:
- IUSR - Грант читайте, забороняйте писати
- Кореневий каталог веб-сайту IIS. Наприклад, у проекті Zend Framework це буде каталог / public.
- Якщо ваша програма завантажує файли та зберігає їх у загальнодоступному каталозі, вам потрібно застосувати цей дозвіл до каталогу тимчасових завантажень. Це відбувається тому, що
move_uploaded_file
буде збережено дозволи каталогу завантаження. Це найбільший недолік цього налаштування дозволів, який я знайшов.
- ApplicationPoolIdentity (
IIS AppPool\<<YourApplicationPoolName>>
) - Грант Прочитати & Список
- Корінь програми PHP. Наприклад, у проекті Zend Framework це був би весь проект.
- Будь-які зовнішні бібліотеки (Zend, Doctrine тощо), включені у вашу програму, які не містяться в папці додатків.
- ApplicationPoolIdentity - Зміна гранту
- Будь-яке місце , де ваш додаток буде писати такі як
upload_tmp_dir
, session.save_path
, і error_log
.
- Іноді мені потрібно додати цей дозвіл до кореня програми PHP в моєму середовищі розробки, щоб підтримувати такі речі, як автогенерація проксі-серверів Doctrine .
- ApplicationPoolIdentity - Список грантів
- Якщо ваша програма знаходиться у віртуальному каталозі, вам потрібно буде додати цей дозвіл до кореня веб-сайту. Це дозволяє вашій програмі читати її батьківський web.config. Наприклад, якщо корінь вашої програми http://example.com/MyPHPApp , встановіть цей дозвіл у веб-каталозі example.com. Зокрема, вам потрібно застосувати лише "Ця папка та файли", "Тільки в цьому контейнері".
Я сподіваюся, що це допоможе всім, хто вирішить, що інструкції learn.iis.net не є ідеальними.