我正在运行安装了IIS 8的Windows 2012服务器,
我有一个PHP脚本,抱怨没有写在特定文件夹的权限。
如果我授予这个IUSR用户的权限,它工作得很好,
但是我不知道这是否是正确的做法或是否安全?
我读了关于IUSR和有关这个用户是匿名authentication吨描述,我只是不明白是否有任何风险给予完全的许可。
所以我停止了这个工作,认为先从专家那里得到一些build议是明智的。
我应该授予哪个用户权限?
谢谢!
基于Windows NT的操作系统中的所有对象访问均在用户帐户的上下文中执行。 当匿名用户访问您的网站时,IIS将访问IUSR_machinename用户帐户下的文件和脚本。 此用户帐户的权限非常有限,可用于区分匿名访问。
IIS中的身份validationfunction允许远程用户进行身份validation,以便IIS“模拟”他们的Windows用户帐户,并访问其用户帐户上下文下的文件和脚本,而不是匿名用户帐户的上下文。
如果您的远程用户没有Windows用户帐户,那么他们只是匿名用户,并且无法向IIS进行身份validation。 在这种情况下(这是典型的情况),您只需要授予匿名用户帐户权限,即可执行任何必要的操作来使您的应用程序正常工作。 这只是一些应用程序的方式 – 用户无法进行身份validation,因此您必须进行适当的匿名访问并授予匿名用户帐户的权限。
那是“风险”吗? 这取决于你的应用程序。 如果匿名用户能够将任意file upload到目录并执行它们,则可以有效地打开服务器计算机上的公共shell访问。 应用程序的架构将决定这一点。
允许匿名用户将任意types,数量和大小的file upload到远程服务器计算机的应用程序对我来说似乎是非常危险的。 这是一个完整的showstopper,如果存储上传的目录可以通过web服务器进行下载,因为实际上,你只是把你的服务器变成一个公共的文件共享站点。 如果用户可以导致他们上传的任何内容(包括EXE文件和/或脚本文件)由Windows或PHP解释器执行,那么这也是一个完整的showstopper。
从用户控制(即,如果脚本只保留文件以跟踪状态,而不是允许用户上传任意内容)写入的“删除”越多,看起来就越不“冒险”。 我正在寻找脚本来做好消毒用户input并限制用户可以导致脚本写入的数据量(以防止DoS攻击)。
最终,你真正需要的是一个应用程序安全架构评估,也许是一个pentest。 如果这是一个被广泛使用的脚本,并且可以公开使用,那么希望简单的安全漏洞应该已经被破解了。 如果这是一个更精品或定制的东西,那么我会小心相信没有审查的应用程序的安全体系结构。