我有一个MVC控制器暴露了一个Initialise Action
.托管在同一IIS上的其他虚拟Web应用程序将需要访问它Action.
出于安全原因,只需要授予来自同一Web服务器(托管MVC应用程序)的请求访问此Iniliase方法的权限.
有人可以帮助如何实现这一目标吗?我们无法使用localhost进行验证,因为此应用程序将托管在不支持locahost请求的Azure中.
我的答案是限制服务器端请求.
调用该网站Initialise
需要做的请求http://www.example.com/controller/Initialise
,而不是http://localhost/controller/Initialise
(更换www.example.com
并controller
与您的域名,当然控制器名称).
应该在控制器操作中检查HttpRequest.IsLocal:
if (!Request.IsLocal) { throw new SecurityException(); }
这将拒绝任何非来自本地主机的请求.此方法假定调用站点和请求的站点共享相同的IP地址 - 文档声明这应该有效:
如果请求发起方的IP地址是127.0.0.1,或者请求的IP地址与服务器的IP地址相同,则IsLocal属性返回true.
为了限制客户端请求Google"csrf缓解".