C# 基于配置值防止网站中的Http请求
我已经实现了在IIS中部署的ASP.Net应用程序,并启用了http和https端口。现在我需要根据Web.Config值拒绝HTTP请求。如果此值设置为True,则它不应接受HTTP随附的请求,就像它应抛出错误C# 基于配置值防止网站中的Http请求,c#,asp.net,c#-4.0,C#,Asp.net,C# 4.0,我已经实现了在IIS中部署的ASP.Net应用程序,并启用了http和https端口。现在我需要根据Web.Config值拒绝HTTP请求。如果此值设置为True,则它不应接受HTTP随附的请求,就像它应抛出错误无效操作一样。。尝试使用安全连接进行请求。我做的第一件事是在Global.asax文件中检查此项,如下所示: if (Utilities.Utility.HttpsCheck) { if (!Request.IsSecureConnection)
无效操作一样。。尝试使用安全连接进行请求
。我做的第一件事是在Global.asax文件中检查此项,如下所示:
if (Utilities.Utility.HttpsCheck)
{
if (!Request.IsSecureConnection)
{
Response.Write("Invalid Operation");
}
}
在这个方法中,我得到一个异常请求在此上下文中不可用。我在谷歌上搜索了这个错误,知道在ASP.NET中无法访问全局文件中的Request
我尝试的下一种方法是在我的项目的每一页中添加上述代码,并在处理请求之前进行检查。但是通过这种方式,我无法控制阻止对HTML页面的请求,我的项目中也有一些HTML页面,这些文件也需要限制
如果我在页面中包含代码,那么它只适用于该页面。。但我有一些图像/视频文件也在网站上,这些也需要限制
有没有更好的办法?请在这方面帮助我
提前感谢。您可以将IIS配置为仅接受https。Http请求将自动重定向。下面是一个如何配置IIS的示例。
希望这有帮助一个非常简单的方法是对Page类进行子类化,并在子类化的页面中应用您的条件。可以有一个子类表示受限,一个子类表示非受限。受限页面可以访问web配置参数的值,并根据需要重定向
public class HttpsPage : Page {
protected override void OnLoad(..)
{
if (Utilities.Utility.HttpsCheck)
{
if (!Request.IsSecureConnection)
{
Response.Redirect(your-url);
}
}
}
}
那太难了。这是对您的问题的基于代码的回答,但根据您的“确切”需求,有20种更好的方法
坦率地说,如果你不确定自己在做什么,那么我会非常仔细地考虑将任何你认为需要安全套接字的东西放到web上。。。。特别是如果你放的东西不是你的 我已经实现了HTTP模块,以根据我的配置值限制对我的网站的HTTP访问。通过使用它,我可以限制HTPP对图像文件和html页面的访问。这是我的模块代码:
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
public void context_BeginRequest(Object source, EventArgs e)
{
//Code to reject the HTTP requests on basis of Config Value
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
if (context != null)
{
if (Utilities.Utility.HttpsCheck)
{
if (!context.Request.IsSecureConnection)
{
context.Response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest;
context.Response.StatusDescription = "Secure connetion required";
context.Response.End();
}
}
}
}
为什么不删除IIS中的http绑定?@JonEgerton-是的,我可以删除IIS中的http绑定,但有时我需要启用此http访问。。这就是为什么我每次都检查基于代码的解决方案,而不是更改IIS配置的原因。谢谢您的回复。。这一点我已经实现了,但是对于aspx页面来说,这将非常有效。但是我的web应用程序中也有一些html页面,那么对这些htm页面的访问限制呢?