gpt4 book ai didi

asp.net-mvc - 在 MVC 应用程序的所有页面上强制执行 HTTPS

转载 作者:行者123 更新时间:2023-12-05 08:01:34 25 4
gpt4 key购买 nike

我有一个在共享服务器上运行的 ASP.NET MVC3 应用程序。我已经在服务器上安装了 SSL 证书,我的应用程序中的所有 Controller 都装饰有 RequireHTTPS。目的是确保没有未加密的页面(即所有页面都通过 HTTPS 提供)。

但是,某些页面(例如 js,HTML 错误页面)可以在未加密的情况下访问(通过在请求中的主机名中添加 :80)。诚然,我所说的页面是静态的,但我如何保护我网站中的所有页面,防止其中任何页面未加密地被下载。我无权访问 IIS 服务器设置,因为这是一个共享站点,但是有没有办法使用 HTTP 处理程序或重写 URL 模块(或者我可以直接在文件夹上设置权限)?

感谢您提供任何信息。

最佳答案

我使用这样的 Action 过滤器属性

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 的基本 Controller

  [RequireSSL]
public class SecureController : Controller
{

}

然后任何我想成为 SSL 的 Controller 都会继承这个 Controller 。希望有帮助您只需要确保所有“页面”都是 Controller 操作返回的 View 。如果需要,这应该是一个非常容易的更改。

关于asp.net-mvc - 在 MVC 应用程序的所有页面上强制执行 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13159149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com