ZetCode

ASP.NET RequireHttps

最后修改于 2025 年 4 月 3 日

在本文中,我们将探讨 ASP.NET 8 中的 RequireHttps 属性。此属性强制使用 HTTPS 来保护 Web 应用程序的安全通信。

ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。RequireHttps 属性有助于确保安全的数据传输。

基本定义

ASP.NET 中的 RequireHttps 属性强制控制器或操作使用 HTTPS。它会自动将 HTTP 请求重定向到 HTTPS,以增强安全性。

当应用于控制器或操作方法时,RequireHttps 可确保所有请求都必须使用 HTTPS。非 HTTPS 请求将被重定向到等效的 HTTPS URL。

RequireHttps 对于保护登录凭据等敏感数据至关重要。它通过强制加密通信来防止中间人攻击。

ASP.NET RequireHttps 示例

以下示例演示了如何在 ASP.NET 8 应用程序中使用 RequireHttps。

Program.cs
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllersWithViews(options =>
{
    options.Filters.Add(new RequireHttpsAttribute());
});

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

此配置全局应用 HTTPS 要求。UseHttpsRedirection 中间件会自动将 HTTP 重定向到 HTTPS。UseHsts 启用 HTTP 严格传输安全。

Controllers/AccountController.cs
using Microsoft.AspNetCore.Mvc;

[RequireHttps]
public class AccountController : Controller
{
    [HttpGet]
    public IActionResult Login()
    {
        return View();
    }

    [HttpPost]
    public IActionResult Login(string username, string password)
    {
        // Authentication logic here
        return RedirectToAction("Index", "Home");
    }

    [HttpGet]
    [RequireHttps]
    public IActionResult SecureData()
    {
        return View();
    }
}

此控制器展示了应用 HTTPS 要求的两种方式。类上的 [RequireHttps] 属性适用于所有操作。该属性也可以应用于单个操作。

Login 操作演示了如何保护 GET 和 POST 请求。SecureData 操作显示了对特定终结点的显式 HTTPS 要求。

当用户通过 HTTP 访问这些终结点时,他们将被自动重定向到 HTTPS。这确保所有通信都经过加密,从而保护敏感数据。

来源

Microsoft ASP.NET 安全文档

在本文中,我们探讨了 ASP.NET 8 中的 RequireHttps 属性。这项重要的安全功能通过强制使用 HTTPS 来帮助保护 Web 应用程序。

作者

我的名字是 Jan Bodnar,我是一名热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在教学编程方面拥有十多年的经验。

列出所有 ASP.NET 教程