IIS 和 ASP.NET Core 將網站強制導向HTTPS並且使用HTTP狀態碼為301


Posted by TalllKai on 2021-05-03

今天收到NCCST(行政院國家資通安全會報技術服務中心)的一個資安預警警訊

大意就是說我們家管的有些網站,未設定強制轉到HTTPS,但早在八百年前早就已經設定好都是強制轉到HTTPS了,那問題出在哪兒呢?

仔細一看,他說不僅要強制導向HTTPS,而且HTTP Status Code必須要301,而我這邊ASP.NET Core都是預設開啟強制轉到HTTPS的,不過狀態碼會是308的樣子。

在網路上找了一下,301跟308似乎是類似的東西,差別只在什麼一個能POST轉GET,一個不行,總之也沒找到說該用哪個才是正確的,為什麼會想質疑這封資安預警警訊呢?順便補充一下知識。

因為政府的一些高層單位,資訊素質都不是普通的差,常常一知半解就亂發一些不符合實際情況的規定過規則,但你跟他們吵是沒什麼用的,總之還是乖乖改成他們要的比較實際。

所以我就開始著手改了,首先是ASP.NET CORE這邊,打開Startup.cs,通常都會設定app.UseHttpsRedirection();讓網站強制導向HTTPS。接著到另外一個區塊貼上以下程式碼。

public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpsRedirection(options =>
    {
        options.RedirectStatusCode = StatusCodes.Status301MovedPermanently;
        options.HttpsPort = 443;
    });
}

這樣就會從原本的308變成301了。

不過我們還有其他不是Core的網站,那就要上IIS進行調整了。

選擇URL Rewrite。那這個是一個網址重寫的套件,預設是沒有安裝的,要自行去官網下載,這裡
上面會看到有一條規則,那是用來強制導向HTTPS的規則,不會設定的人可以看保哥的文章,點進去後。

拉到最下方就可以選擇你要的重新導向類型,這邊就選擇301就大功告成了。

最後可以到這個網站https://www.webconfs.com/http-header-check.php
來檢查你的設定是不是有正確使用301。


#iis #HTTPS







Related Posts

Day 71

Day 71

Undefined 和 Not Defined 的不同

Undefined 和 Not Defined 的不同

CSS保健室|background-blend-mode

CSS保健室|background-blend-mode


Comments