我應該在 IIS 中授予哪個使用者權限?
我正在執行安裝了 IIS 8 的 Windows 2012 伺服器,
我有一個 php 腳本抱怨沒有對特定文件夾的寫權限。
如果我向這個 IUSR 使用者授予權限,它工作得很好,
但我不知道這是否是正確的方法或者它是否安全?
我閱讀了有關 IUSR 的資訊,並且有大量關於該使用者進行匿名身份驗證的描述,我只是不明白是否有任何風險給予它完全許可。
所以我停止了這項工作,並認為首先從專家那裡獲得一些建議是明智的。
我應該授予哪個使用者權限?
謝謝!
基於 Windows NT 的作業系統中的所有對象訪問都是在使用者帳戶的上下文中執行的。當匿名使用者訪問您的網站時,IIS 訪問IUSR_machinename使用者帳戶下的文件和腳本。此使用者帳戶的權限非常有限,用於劃分匿名訪問。
IIS 中的身份驗證功能允許遠端使用者進行身份驗證,這樣 IIS 將“模擬”他們的 Windows 使用者帳戶並在其使用者帳戶的上下文而不是匿名使用者帳戶的上下文下訪問文件和腳本。
如果您的遠端使用者沒有 Windows 使用者帳戶,那麼他們只是匿名使用者,無法通過 IIS 進行身份驗證。在這種情況下(這是典型的情況),您只需要授予匿名使用者帳戶權限即可執行使您的應用程序正常工作所需的任何操作。這就是使用某些應用程序的方式-您沒有使用者進行身份驗證的能力,因此您必須進行適當的匿名訪問並授予匿名使用者帳戶的權限。
那是“風險”嗎?這取決於您的應用程序。例如,如果匿名使用者能夠將任意文件上傳到目錄並執行它們,那麼您實際上是在伺服器電腦上打開了公共 shell 訪問權限。應用程序的架構將決定這一點。
從表面上看,允許匿名使用者將任意類型、數量和大小的文件上傳到遠端伺服器電腦的應用程序對我來說似乎非常危險。如果儲存上傳的目錄可以通過網路伺服器訪問以進行下載,那麼這就是一個完整的展示,因為實際上,您只是將您的伺服器變成了一個公共文件共享站點。如果使用者可以使他們上傳的任何內容(包括 EXE 文件和/或腳本文件)由 Windows 或 PHP 解釋器執行,這也是一個完整的展示。
從使用者控制中“刪除”的文字越多(即,如果腳本只是將文件保存在那里以跟踪狀態,而不是允許使用者上傳任意內容)看起來“風險”就越小。我正在尋找腳本來很好地清理使用者輸入並限制使用者可以導致腳本寫入的數據量(以防止 DoS 攻擊)。
歸根結底,您真正要尋找的是應用程序安全架構審查,也許是滲透測試。如果這是一個受支持且公開可用的常用腳本,那麼希望簡單的安全漏洞應該已經被消除。如果這是更精品或定制的東西,那麼我會警惕信任應用程序的安全架構而無需對其進行審查。