【问题标题】:What is the risk of someone eavesdropping on a webservice when it's being called by its own server?当 Web 服务被自己的服务器调用时,有人窃听它的风险是什么?
【发布时间】:2012-09-18 13:55:15
【问题描述】:

除了ColdFusion 中的大型主站点外,我们公司的网站由多个.NET 项目组成,这些项目都在同一台服务器上。为了减少代码重复,我们编写了一个 Web 服务,这些项目可以调用这些基本功能。例如,我们有一个服务,如果你给它一个用户 ID,你会得到一些关于用户的信息(没有密码,但是像地址之类的东西)。我担心的是有人戳他们的电子鼻子并捕捉到一些我们不希望他们拥有的信息。这是一个有效的问题,还是来自 web 服务的信息会保留在内部,因为它和调用它的项目位于同一台服务器上?

所以我们的 web 服务都像 www.companyname.com/webservices/webserviceuser.asmx 和 .NET web 项目都像 www.companyname.com/admin/project1/ 或 www.companyname.com/edituser/ 因为他们都共享同一个域名,信息会传到普通互联网吗?

还可以为 web 服务添加安全性以确认调用者是内部应用程序(即使它只是测试调用它的页面的 URL)?

提前谢谢你。

【问题讨论】:

    标签: asp.net web-services security


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果您不使用机器,则公共 ip/名称信息不应通过互联网获取。

      这里是一些示例代码,您可以如何检查本地请求:

              //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"]);
                      }
                  }
              }
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-17
        • 1970-01-01
        • 2013-05-01
        • 2015-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多