簡體   English   中英

Startup.cs安全措施

[英]Startup.cs security measures

我想知道我是否
(a)遵循良好的編碼規范,
(b)無害地重復自己,或
(c)添加低效的冗余

例如:
1)在Configure()中,我可以添加RewriteOptions().AddRedirectToHttps();
2)在ConfigureServices()中,我可以添加services.Configure<MvcOptions>(options => { options.Filters.Add(new RequireHttpsAttribute()); });

另一個例子:
1)在Configure()中,我可以添加app.UseAuthentication();
2)在ConfigureServices(),我可以添加.RequireAuthenticatedUser()AddMvc()調用。

在兩個示例中, 似乎我只用一個電話就可以擺脫。 我是否有空且清楚地只保留一個電話? 如果是這樣,哪一個更好?

我進行了一些搜索,可以看到所有這些方法都在使用中,但是我沒有找到可以比較這些調用相對優點的資源,更不用說指出將它們一起使用是好還是不好的做法。

舉第一個例子:

1)在Configure()我可以添加RewriteOptions().AddRedirectToHttps() ;

2)在ConfigureServices()我可以添加services.Configure<MvcOptions>(options => { options.Filters.Add(new RequireHttpsAttribute()); });

兩者本質上都是相同的-將HTTP請求重定向到HTTPS。 不同之處在於它們適用於哪些請求。

如果使用重寫器中間件,則將其提交給中間件的所有請求都將重定向到HTTPS。

public void Configure(IApplicationBuilder app)
{
    app.UseStaticFiles(); // Requests handled by this middleware won't be redirected to HTTPS

    var options = new RewriteOptions()
       .AddRedirectToHttps();

    app.UseRewriter(options); // All requests that make it this far will be redirected from HTTP to HTTPS

    app.UseMvc(); // Requests guaranteed to be HTTPS
}

在第二種情況下,使用全局過濾器應用RequireHttpsAttribute ,只有將其發送到MvcMiddleware請求才會重定向到HTTPS。

根據最佳實踐,我建議使用重寫器中間件-您可以將其添加到中間件管道的開頭,然后所有請求都需要HTTPS,而不僅僅是將其發送到MVC中間件的請求。


在第二個示例中,這兩種方法實際上執行不同的操作:

  • app.UseAuthentication() -認證請求,並且將User通過例如反序列化存儲在cookie中的用戶主要與請求相關聯
  • RequireAuthenticatedUser() -要求用戶已登錄,然后才能調用控制器上的操作方法。 如果用戶尚未登錄,則將他們重定向到登錄頁面。 在這種情況下,你必須調用app.UseAuthentication()之前app.UseMvc()否則User即使在你登陸的請求將不會被設置,你會被重定向到登錄頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM