13 bulan kemudian, saya ingin meninjau kembali pertanyaan saya sendiri. Pada waktu itu saya telah mentransfer setengah lusin situs web dari IIS 6 ke IIS 7.5 dan mengkonfigurasinya dengan metode pilihan saya. Yang bisa saya katakan adalah bahwa situs web berfungsi, mereka tidak memiliki masalah keamanan (bukan bahwa ini adalah situs populer), dan menurut pendapat saya pengaturannya lebih aman daripada yang direkomendasikan learn.iis.net.
Untuk anak cucu, berikut adalah pengaturan yang relevan. Dalam PHP INI:
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 0
Dalam IIS:
- Application Pool> Identity> ApplicationPoolIdentity
- Situs web> Otentikasi> Otentikasi Anonim> Pengguna Tertentu: IUSR
Izin NTFS dan tempat untuk menerapkannya:
- IUSR - Grant Read, Deny Write
- Direktori root situs web IIS. Misalnya, dalam proyek Zend Framework ini akan menjadi direktori / publik.
- Jika aplikasi Anda mengunggah file dan menyimpannya di direktori publik, Anda perlu menerapkan izin ini ke direktori unggahan sementara. Ini karena
move_uploaded_file
akan mempertahankan izin direktori unggahan. Ini adalah kelemahan terbesar dari pengaturan izin yang saya temukan.
- ApplicationPoolIdentity (
IIS AppPool\<<YourApplicationPoolName>>
) - Grant Read & List
- Akar aplikasi PHP Anda. Misalnya, dalam proyek Zend Framework ini akan menjadi keseluruhan proyek.
- Pustaka eksternal apa pun (Zend, Doktrin, dll.) Yang disertakan oleh aplikasi Anda yang tidak ada dalam folder aplikasi.
- ApplicationPoolIdentity - Grant Modify
- Setiap lokasi di mana aplikasi Anda akan menulis seperti
upload_tmp_dir
, session.save_path
, dan error_log
.
- Kadang-kadang saya perlu menambahkan izin ini ke root aplikasi PHP di lingkungan pengembangan saya untuk mendukung hal-hal seperti proksi generasi-otomatis Doctrine .
- ApplicationPoolIdentity - Daftar Hibah
- Jika aplikasi Anda ada di direktori virtual, Anda harus menambahkan izin ini ke root situs web. Ini memungkinkan aplikasi Anda membaca web.config induknya. Misalnya, jika root aplikasi Anda adalah http://example.com/MyPHPApp , tetapkan izin ini di direktori web example.com. Khususnya Anda hanya perlu menerapkan ke "Folder dan file ini", "hanya di dalam wadah ini".
Saya harap ini membantu orang lain yang memutuskan bahwa petunjuk learn.iis.net tidak ideal.