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

本文关键字:操作 localhost MVC5 | 更新日期: 2023-09-27 18:25:22

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

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

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
  • 在192.168.0.5:80上测试mvc

在IIS上,我单击我的网站,在Views目录中,在我的"NotAuthorized"目录中,那些包含我不希望用户访问的页面的人。在IP地址和域限制上,我设置了All deny和192.168.0.5(IIS)authorized。

运行测试:

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

我不知道下一步该怎么办。

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

在IIS 中

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

如果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();
}

它完成了任务。我会看看将来是否能为我的问题找到更好的解决方案。