2012-09-26 30 views
2

除了ColdFusion中的大型主站点之外,我们的公司网站由几个.NET项目组成。为了减少代码重复,我们编写了一个web服务,这些项目可以调用基本功能。例如,我们有一个服务是你给它一个用户ID,你可以得到有关用户的一些信息(没有密码,但是像地址这样的东西)。我所关心的是有人捅他们的电子鼻子,并捕捉一些我们不希望他们拥有的信息。这是一个有效的关注点,还是来自Web服务的信息会保持内部状态,因为它和调用它的项目位于同一台服务器上?当一个web服务被自己的服务器调用时,有人窃听webservice的风险是什么?

所以我们的webservices都像www.companyname.com/webservices/webserviceuser.asmx和.NET web项目都像www.companyname.com/admin/project1/或www.companyname.com/edituser/ Since他们都拥有相同的域名,这些信息会传送到一般的互联网吗?

也有可能增加web服务的安全性,以确认调用者是一个内部应用程序(即使它只是测试调用它的页面的URL)?

预先感谢您。

回答

1

它看起来像域名www.companyname.com实际上不属于您的服务器,但属于负载平衡器,防火墙或某种类型的代理。网络通话将从您的服务器转到拥有该名称的框然后再返回。您可以通过修改主机文件来欺骗您的服务器,使其相信它实际上拥有域名,但这可能会破坏其他内容。

如果拥有域名和您的服务器的盒子在同一网络上,则该呼叫不会离开该网络。除非必须,否则它不会“出门到普通的互联网”。您可以在您的服务器上设置一个路由表,通过代理服务器在其他地方发送网络包,然后到达www.companyname,但这种情况不太可能,除非您的网络拓扑非常特殊。

1

如果您没有使用机器公共ip /名称信息不应该通过互联网。

下面是一些示例代码,您可以如何ckeck为本地请求:

 //check if remote access is allowed by app configuration (optional)... 
     if (!Services.ConfigObjectsManager.ApplicationGeneral.AllowRemoteAdministration) 
     { 
      string retaiveUrl = HttpContext.Current.Request.Url.AbsolutePath.Remove(0, appUrl.Length - 1); 
      //here I check even for specific page location... 
      if (retaiveUrl.ToLower().StartsWith("/adminpages")) 
      { 
       //check if request is from local machine... 
       if (!Request.IsLocal) 
       { 
        throw new Exception("Remote administration is not allowed for request '" + 
         HttpContext.Current.Request.Url.AbsolutePath + "'. Request came from " + 
         Request.ServerVariables["REMOTE_ADDR"]); 
       } 
      } 
     } 

您可以对每一个服务调用此检查。

相关问题