2

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

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

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

先感谢您。

4

2 回答 2

1

如果您不使用机器公共 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"]);
                }
            }
        }

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

于 2012-09-26T21:00:16.353 回答
1

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

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

于 2012-09-26T21:53:51.503 回答