如何保护Web服务器免受反向代理服务器的影响

Twi*_*per 14 asp.net iis protection reverse-proxy

我有一个网站"www.website.com".

最近我发现有人在我的网站前设置了一个反向代理,其中有一个几乎相同的网址"www.website1.com".

我担心那些通过反向代理访问我网站的用户.他们登录时可能会记录他们的用户名和密码.

有没有办法让我的Web服务器拒绝反向代理?

例如,我在"www.stackoverflow.com"前面使用网址"www.fakestackoverflow.com"设置了反向代理.因此,每当我在网络浏览器地址栏中输入"www.fakestackoverflow.com"时,我都会被反向代理重定向到"www.stackoverflow.com".然后我注意到我的地址栏中的网址已更改为"www.stackoverflow.com",表示我不再通过反向代理.

"www.stackoverflow.com"一定检测到我从另一个网址进入网站,然后通过实际网址将我重定向到网站.

我如何在ASP.NET Web应用程序中执行类似的操作?

询问服务器故障.

jmz*_*jmz 11

首先,使用JavaScript来嗅探document.location.href并将其与您的域匹配:

var MyHostName =  "www.mydomain.com";
if (0 == document.location.href.indexOf("https://")) 
{
    MyHostName = "https://" + MyHostName + "/";
    if (0 != document.location.href.indexOf(MyHostName)) {
        var new_location = document.location.href.replace(/https:\/\/[^\/]+\//, MyHostName);

        if(new_location != document.location.href)
            document.location.replace(new_location);
    }
}
else
{
    MyHostName = "http://" + MyHostName + "/";
    if (0 != document.location.href.indexOf(MyHostName)) {
        var new_location = document.location.href.replace(/http:\/\/[^\/]+\//, MyHostName);

        if(new_location != document.location.href)
            document.location.replace(new_location);
    }
}
Run Code Online (Sandbox Code Playgroud)

第二步:将init脚本写入所有ASP页面,以检查远程用户IP地址是否与反向代理的地址匹配.如果匹配,则重定向到tinyurl链接,该链接重定向回您的真实域.使用tinyurl或其他重定向服务来反击反向代理的URL重写.

第三步:编写计划任务以对假域进行DNS查找,并更新步骤2中init脚本使用的配置文件.注意:不要在ASP中进行DNS查找,因为DNS查找可能会停顿5秒钟.这为您的网站打开了一扇门.此外,不要仅仅基于IP地址阻止,因为它很容易重新定位.

编辑:如果您被认为是代理运营商窃取用户密码和用户名,您应该将所有服务的用户记录到代理的IP地址,并禁用他们的帐户.然后通过拼写错误的域名向他们发送电子邮件,说明他们是网络钓鱼攻击的受害者,并请求他们更改密码.

  • @jmz +1很好的代码,我认为它的工作,但如果有一些自定义反向代理窃取一些密码,那么它将删除可能大多数的javascript,以避免这种情况发送页面时. (2认同)
  • 我建议在检测到反向代理IP时提供色情服务. (2认同)