MVC5阻止来自除localhost之外的所有操作

时间:2014-10-02 08:56:14

标签: c# asp.net-mvc web-config http-status-code-403

我找到了解决这个问题的方法,这对我来说很简单,但在互联网上没有成功。

在我为测试做的示例项目中: 我的控制器NotAuthorized带有public ActionResult Index() { return View(); }

Index视图仅包含文字This page need to be only available in local

所以,我的问题是,我希望访问NotAuthorized/Index的唯一方法是来自IIS本身,任何来自LAN或WAN的人都需要获得403错误。

我认为web.config可以完成这项工作,但它是否安全?以及如何实施它?

这是一个大项目,我需要阻止来自互联网的API,因为只有应用程序需要使用它。 在最终项目中,应用程序使用本地地址,如“127.0.0.1/xxx”。

对不起我的英语,而不是我的语言。

编辑:(关注greatbear302解决方案) 使用WebDeploy(我需要的)测试已发布的应用程序。

网站绑定是:

  • 192.168.0.5:9999
  • testmvc on 192.168.0.5:80

在IIS上,我点击我的网站,并在Views目录中,在我的'NotAuthorized'目录中,其中包含我不希望用户可以访问的页面。 在IP地址和域限制上,我设置了All deny和192.168.0.5(IIS)授权。

运行测试:

  • 192.168.0.5:9999/NotAuthorized:我看到了该页面。
  • testmvc/NotAuthorized:我看到了该页面。

我不知道下一步该做什么。

2 个答案:

答案 0 :(得分:0)

在IIS中

  1. 点击您的网站
  2. 单击“IP地址和域限制”(如果缺少此功能,请从“控制面板”中的“添加删除Windows组件”安装)
  3. 点击最右侧窗格上的允许条目
  4. 在“特定IP地址”字段中,输入托管API的服务器的IP地址,然后单击“确定”
  5. 单击“编辑功能设置”,在“访问未指定的客户端”中,选择“拒绝”,然后单击“确定”

答案 1 :(得分:0)

在IIS上没有任何成功,我在应用程序上进行了基本的IP过滤。

我的IIS在192.168.0.5上执行应用程序,所以这里是我的代码:

public ActionResult Index() {
    ViewBag.UserIP = Request.UserHostAddress;
    if (Request.UserHostAddress != "192.168.0.5")
        throw new HttpException((int)System.Net.HttpStatusCode.Forbidden, "Accès non autorisé");
    return View();
}

它完成了这项工作。如果我能为我的问题找到更好的解决方案,我将来会看到。