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
:我看到页面了
我不知道下一步该怎么办。
在IIS 中
- 点击您的网站
- 单击"IP地址和域限制"(如果缺少此功能,请从"控制面板"中的"添加-删除Windows组件"进行安装)
- 单击最右侧窗格上的"允许输入"
- 在"特定IP地址"字段中,输入承载API的服务器的IP地址,然后单击"确定"
- 单击"编辑功能设置",在"访问未指定的客户端"中,选择"拒绝",然后单击"确定"
如果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();
}
它完成了任务。我会看看将来是否能为我的问题找到更好的解决方案。