13 tháng sau, tôi muốn xem lại câu hỏi của chính mình. Lúc đó tôi đã chuyển một nửa tá trang web từ IIS 6 sang IIS 7.5 và định cấu hình chúng theo phương pháp ưa thích của tôi. Tất cả những gì tôi có thể nói là các trang web hoạt động, chúng không có bất kỳ vấn đề bảo mật nào (không phải đây là các trang web phổ biến) và theo tôi, thiết lập an toàn hơn những gì learn.iis.net khuyến nghị.
Đối với hậu thế, đây là các cài đặt có liên quan. Trong INI PHP:
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 0
Trong IIS:
- Nhóm ứng dụng> Danh tính> ApplicationPoolIdentity
- Trang web> Xác thực> Xác thực ẩn danh> Người dùng cụ thể: IUSR
Các quyền NTFS và nơi áp dụng chúng:
- IUSR - Cấp đọc, từ chối viết
- Thư mục gốc của trang web IIS. Ví dụ, trong dự án Zend Framework, đây sẽ là thư mục / công khai.
- Nếu ứng dụng của bạn tải lên các tệp và lưu chúng trong một thư mục công cộng, bạn cần áp dụng quyền này cho thư mục tải lên tạm thời. Điều này là do
move_uploaded_file
sẽ bảo vệ các quyền của thư mục tải lên. Đây là nhược điểm lớn nhất của thiết lập quyền này mà tôi đã tìm thấy.
- ApplicationPoolIdentity (
IIS AppPool\<<YourApplicationPoolName>>
) - Cấp đọc & Danh sách
- Thư mục gốc của ứng dụng PHP của bạn. Ví dụ, trong một dự án Zend Framework, đây sẽ là toàn bộ dự án.
- Bất kỳ thư viện bên ngoài (Zend, Doctrine, v.v.) được bao gồm bởi ứng dụng của bạn không có trong thư mục ứng dụng.
- ApplicationPoolIdentity - Cấp sửa đổi
- Bất kỳ vị trí nơi ứng dụng của bạn sẽ viết như
upload_tmp_dir
, session.save_path
, và error_log
.
- Đôi khi tôi cần thêm quyền này vào thư mục gốc của ứng dụng PHP trong môi trường phát triển của mình để hỗ trợ những thứ như tự động tạo proxy của Doctrine .
- ApplicationPoolIdentity - Danh sách tài trợ
- Nếu ứng dụng của bạn nằm trong một thư mục ảo, bạn sẽ cần thêm quyền này vào thư mục gốc của trang web. Điều này cho phép ứng dụng của bạn đọc web.config cha của nó. Ví dụ: nếu root ứng dụng của bạn là http://example.com/MyPHPApp , hãy đặt quyền này trên thư mục web example.com. Cụ thể, bạn chỉ cần áp dụng cho "Thư mục và tệp này", "chỉ trong vùng chứa này".
Tôi hy vọng điều này sẽ giúp bất cứ ai khác quyết định rằng các hướng dẫn learn.iis.net không lý tưởng.