今天收到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。