我在共享服务器上运行了一个ASP.NET MVC3应用程序。我在服务器上安装了SSL证书,我的应用程序中的所有控制器都装有RequireHTTPS。目的是确保没有未加密的页面(即所有页面都通过HTTPS提供)。
但是,可以未加密地访问CERTAIN页面(例如js,HTML错误页面)(通过向请求中的主机名添加:80)。当然,我所谈论的页面是静态的,但我如何保护我网站中的所有页面,防止其中的任何页面未加密下载。我无法访问IIS服务器设置,因为这是一个共享站点,但有没有办法使用HTTP处理程序或重写URL模块(或者我可以直接在文件夹上设置权限)?
感谢您的任何信息。
答案 0 :(得分:0)
我使用像这样的动作过滤器属性
public class RequireSSL : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpRequestBase req = filterContext.HttpContext.Request;
HttpResponseBase res = filterContext.HttpContext.Response;
//Check if we're secure or not and if we're on the local machine
if (!req.IsSecureConnection && !req.IsLocal)
{
var builder = new UriBuilder(req.Url)
{
Scheme = Uri.UriSchemeHttps,
Port = 443
};
res.Redirect(builder.Uri.ToString());
}
base.OnActionExecuting(filterContext);
}
}
然后我用这个属性
创建了一个名为SecureController的基本控制器 [RequireSSL]
public class SecureController : Controller
{
}
然后我想成为SSL的任何控制器都将继承此控制器。 希望有所帮助 您只需要确保所有“页面”都是控制器操作返回的视图。如果需要,这应该是一个非常容易的变化。