是否可以欺骗Web应用程序中的主机文件条目?

时间:2016-01-08 23:27:55

标签: c# asp.net iis dns

我有一个休息应用程序坐在IIS服务器上(在公共互联网上),其配置如下:

  • IP地址: A.B.C.D
  • 主机标头: something-not-public-dns.example.com

(该条目不在公共dns中,因为它不一定是。这不仅仅是通过模糊主机头来实现安全性。)

为了让我的客户端连接到应用程序,我只需在hosts文件中添加一个条目:

A.B.C.D something-not-public-dns.example.com

使用hosts文件条目,一切都很好。

问题是我的一个客户端坐在ASP.NET Web应用程序中,我无法修改应用程序所在的Web服务器的hosts文件。

因此我的问题是 - 是否可以欺骗Web应用程序内的主机文件条目?

我在考虑这样的事情:

func outerX(innerPoint:CGPoint)->CGFloat
{
    return (innerPoint.x-self.frame.size.width*0.5)*radius2/radius1 +self.frame.size.width*0.5
}

func outerY(innerPoint:CGPoint)->CGFloat
{
    return (innerPoint.y-self.frame.size.height*0.5)*radius2/radius1+self.frame.size.height*0.5
}

func moveObjectToOuterCircle()
{
    let innerPoint = object1.position
    let outerPoint = CGPointMake(outerX(innerPoint), outerY(innerPoint))

    object1.removeAllActions()

    object1.runAction(SKAction.moveTo(outerPoint,duration:0.25))
}

我会考虑上面的示例请求级别欺骗,这很好,但我也很想知道是否也可以执行应用程序级别欺骗。这样,应用程序可以设置主机条目,并且在该应用程序中发出的所有请求都将使用它们。

1 个答案:

答案 0 :(得分:4)

你正在以错误的方式解决这个问题 - 而不是尝试设置从域名到IP地址的映射,你应该简单地向IP发出请求并显式覆盖HTTP请求的Host头。您要使用的域名:

string url = "A.B.C.D/myservice/mymethod";
var client = new WebClient();
client.Headers[HttpRequestHeader.ContentType] = "application/json";
client.Headers[HttpRequestHeader.Host] = "something-not-public.example.com";