如何在iis7中停止从web访问文件以外的网站目录

时间:2011-06-30 03:46:48

标签: asp.net iis-7 windows-server-2008

我有一个Windows Server 2008.我正在使用IIS7添加一些网站。但是所有网络都可以访问外部文件。例如:

@{ DirectoryInfo di=new DirectoryInfo("c:\\");}
@foreach (var item in di.GetFiles())
{
    <div>@item.FullName</div>
}

此代码成功枚举文件。我需要配置无法访问外部网站目录。仅使用内部文件和文件夹

怎么做?

2 个答案:

答案 0 :(得分:0)

您可以创建一个具有有限权限的新用户,并设置为在此用户下运行应用程序池。

更改AppPool的身份(即指定App Pool正在运行的凭据)

  1. 打开IIS
  2. 在“连接”树中选择“应用程序池”
  3. 选择应用程序池
  4. 右键单击并选择高级设置。
  5. 查找流程模型/身份。默认值可以是ApplicationPoolIdentity
  6. 点击值(例如ApplicationPoolIdentity)
  7. 点击右侧显示的省略号
  8. 选择内置帐户或点击自定义帐户
  9. 如果选择了自定义帐户,请单击“设置”并指定Windows帐户和密码
  10. 单击“确定”关闭“设置凭据”对话框
  11. 单击“确定”关闭“应用程序池标识”对话框
  12. 单击“确定”关闭“高级设置”对话框。
  13. 回收应用程序池。
  14. 您还可以在web.config文件中设置标识:

    <system.web>
      <identity impersonate="true"
                userName="UserName"
                password="Password"/>
    </system.web>
    

答案 1 :(得分:0)

您显示的代码并不意味着外部人员可以访问您服务器上的文件,它显示的是,服务器上的RUNNING程序可以访问服务器上的文件,这是有意义的。

如果要阻止程序访问这些文件,请为不是运行您要阻止访问的程序的用户的用户添加安全权限。

如果您希望确保使用.htaccess(非常基本的安全性)保护目录,或者考虑到Alex的解决方案