我有一台运行IIS7.5的Windows Server 2008 R2计算机。该网络服务器托管不同域下的许多网站,每个网站包含几个asp.net应用程序。 由于客户的要求,对该机器的支持和开发访问受到很大限制。我想使用Microsoft.Web.Administration库在asmx web方法中查询每个应用程序的配置:
[WebMethod(MessageName = "GetDatabases")]
public List<Connection> GetDatabases()
{
List<Connection> connections = new List<Connection>();
ServerManager sm = new ServerManager();
foreach (Site site in sm.Sites)
{
foreach (Application app in site.Applications)
{
System.Configuration.Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(app.Path);
foreach (ConnectionStringSettings cs in config.ConnectionStrings.ConnectionStrings)
{
try
{
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(cs.ConnectionString);
connections.Add(new Connection { Site = site.Name, Path = app.Path, Name = cs.Name, InitialCatalog = builder.InitialCatalog, DataSource = builder.DataSource });
}
catch
{
connections.Add(new Connection { Site = site.Name, Path = app.Path, Name = cs.Name});
}
}
}
}
return connections;
}
此代码在Visual Studio中运行良好,但一旦部署到服务器,就会发生错误:
Server was unable to process request. ---> Filename: redirection.config
Error: Cannot read configuration file due to insufficient permissions
我研究了如何解决这个问题并找到了这个页面:
http://www.iis.net/learn/manage/configuring-security/application-pool-identities
因此,我为此Web服务创建了一个新的应用程序池,并将应用程序池标识配置为对包含redirection.config(C:\ Windows \ System32 \ inetsrv \ config)的文件夹具有只读权限。夹。 (我为文件夹而不是文件做了这个,因为似乎需要文件夹中的多个文件。)
因此,我的问题是:只要我正确地限制对Web服务的访问,这样做是否有任何安全隐患?对我来说似乎没问题,但是公开配置这些客户网站的意义可能至少可以说是职业限制!
谢谢, 欧文
编辑:只是想知道我是否说得好吗?到目前为止,没有人采取过这样的方式来回答它,所以这个编辑主要是为了碰撞它;)
答案 0 :(得分:1)
我不是安全专家(所以请用一点点盐来表达我的话),但我会说没有一个硬性和快速的答案。但是,最有可能倾向于推荐反对。
如果您的要求是允许支持人员查看您的不同网站使用的连接,那么我认为在一般原则中创建像这样的服务没有问题,只要您小心。
也就是说,在继续之前,你应该考虑很多事情:
最重要的是,您几乎肯定希望将此信息传达给管理层/客户,明确列出潜在风险,并详细说明您将采取哪些措施(如果有的话)来减轻风险。如果他们在所有这些之后签署了协议,那么责任就在于他们。
答案 1 :(得分:0)
网络服务的安全性应该是您最后一个问题,主要关注的是您是否应该通过网络服务提供这样的敏感/机密数据?
答案是肯定的。
除了安全威胁之外,执行此类操作可能会产生相当多的法律影响。即使您的客户是其服务器上运行的所有应用程序的唯一所有者,他们自己也可能无法自由决定实施此类功能,因为它可能对属于其客户的敏感数据构成威胁。因此,如果您自己计划做出这样的决定,那么您可以很好地想象其后果。
此外,由于显而易见的原因,对服务器和敏感数据(如连接字符串)的访问受到限制,并且在任何情况下都不应违反该限制。