伺服器主機或是開發平台的資訊遮蔽,在於減少風險或是惡意攻擊的發生,尤其是程式版本或主機資訊的揭露有可能會引來惡意使用者的針對性測試或零時差攻擊。
在IIS主機中,可透過「設定編輯器」在system.webServer下的security設定 requestFiltering removeServerHeader="true",來遮蔽相關資訊


伺服器主機或是開發平台的資訊遮蔽,在於減少風險或是惡意攻擊的發生,尤其是程式版本或主機資訊的揭露有可能會引來惡意使用者的針對性測試或零時差攻擊。
在IIS主機中,可透過「設定編輯器」在system.webServer下的security設定 requestFiltering removeServerHeader="true",來遮蔽相關資訊


"未加密的__VIEWSTATE參數"屬於風險等級-中
這個參數的目地在於,傳統的ASP.NET表單畫面中,如果送出失敗時,不去清空原來輸入的相關欄位內容,按回上一頁後會把之前所輸入的值帶回來,不過這個未加密的參數所造成的漏容可能會洩漏敏感資料。
解決方法:
在web.config檔的 <System.Web>下加入<pages enableViewStateMac="false" viewStateEncryptionMode="Always">
或是在表單程式中加入 <%@ Page EnableViewStateMac="true" %>
這個風險是透過測試IIS主機的短名稱或網址是否存在,像是攻擊者可以透過get指令下類似 https://www.example.com/*~1*/.aspx 這樣的要求,來猜測該網站上的網頁資料夾或是檔案名稱,進一步取得沒有公開曝露的檔案或程式,可能會造成敏感資料的洩漏問題。
解決的方法就是修改機碼 HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation,值改為 1, 修改完機碼後記得要重開機。
很多人在重開機之後,仍然再次出現404 ERROR(File Not Found ) 這樣就是沒效,請記得要把整個網站刪除,再重新發佈,就可以了。
----
另一個作法,可以直接在.NET Core的Program.cs中進行設定,透過程式的方式來設定。

某次的作業系統安全性更新後,系統服務發生錯誤,開始查不到原因,原以為是程式問題,
到作業系統事件檢視器中發現 " Failed to decrypt using provider 'RsaProtectedConfigurationProvider' "的問題,
--訊息內容如下---
InvalidOperationException 型別 WebMatrix.WebData.PreApplicationStartCode 上應用程式的啟動前初始設定方法 Start 擲回例外狀況,錯誤訊息為: 無法使用提供者 'RsaProtectedConfigurationProvider' 解密。來自這個提供者的錯誤訊息為: 參數錯誤。 (C:\發佈的系統目錄\web.config line 12)。
發生原因:因原先將webconfig的connectionStrings進行加密,發現在RSA解密過程中發生錯誤
問題排除:我們先把webconfig改回為明文(沒有加密過),再重啟IIS,測試正常,沒有再發生錯誤。
解決方法:webconfig檔重新加密
-- 加密語法如下 --
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -pef connectionStrings "C:\發佈的系統目錄"
新增專案的一年後,最近在執行專案時出現 NET::ERR CERT AUTHORITY INVALID 的憑證過期訊息,
即使清除再重發憑證,或是手動刪除「管理使用者憑證」及「管理電腦憑證」後再重新發證,
檢查了整台電腦的localhost憑證,最後發現瀏覽器主機的憑證還是舊的!
環境:Microsoft Visual Studio 2022
專案:.NET Core 7
原因:localhost憑證過期

離發證時間超過一年,重新執行專案後發現出現 NET::ERR CERT AUTHORITY INVALID的訊息
即使刪除「管理使用者憑證」及「管理電腦憑證」後再重新發證,發現瀏覽器主機的憑證仍是舊的!

如果您試過很多方法,例如手動刪除「管理使用者憑證」及「管理電腦憑證」後再重新發證都無效,
建議您可以試試以下的做法。
1. 請先至"C:\Users\{user}\AppData\Roaming\ASP.NET\https" 目錄。
或透過cmd指令 cd %APPDATA%\ASP.NET\https

一開始用讀取css的方式來設background 屬性來設定

後來因需要動態變換圖檔,因此把css轉換成class的方式在jsx裏面
但發現有部份的屬性沒辦法正常顯示,像是backgroundSize...之類的
解決方法,把原來background的相關屬性都各別拆開,不要寫在同一行的background裏面
C#很多人使用iTextsharp來匯出pdf檔,
升級成iText7 (支援.net 6 以上環境) 後遇到中文無法顯示與字型問題
範例是把寫好的html語法直轉轉出成pdf檔並指定中文字體與字型,PDF檔為byte array格式輸出
using iText.Html2pdf;
using iText.Html2pdf.Resolver.Font;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.Layout.Font;
public byte[] ConvertHtmlTextToPDF(string htmlText)
{
ConverterProperties properties = new ConverterProperties();
// 第三個參數需為True,先抓主機的預設,讓中文可以顯示
DefaultFontProviderprovider = new DefaultFontProvider(true, true, true);
FontProvider fontprovider = new FontProvider(provider.GetDefaultFontFamily());
// 加入微軟正黑體 (如果要用預股的系統字體,不想用微軟正黑體,上面的provider一定要加)
fontprovider.AddFont("C:/Windows/Fonts/msjh.ttc,1");
properties.SetFontProvider(fontprovider);
// 接下來把html語法輸出為PDF
MemoryStream baos = new MemoryStream();
PdfDocument temp = new PdfDocument(new PdfWriter(baos));
// PageSize為A4
temp.SetDefaultPageSize(PageSize.A4);
// HtmlConverter是讀html語法的關鍵,需要再下載itext7.pdfhtml 這個package - https://www.nuget.org/packages/itext7.pdfhtml
HtmlConverter.ConvertToPdf(htmlText, temp, properties);
return baos.ToArray();
}
C#很多人使用iTextsharp來匯出pdf檔,
升級成iText7 (支援.net 6 以上環境) 後遇到中文無法顯示與字型問題
範例是把寫好的html語法轉出pdf檔並指定中文字體與字型,PDF檔為byte array格式輸出
using iText.Html2pdf;
using iText.Html2pdf.Resolver.Font;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.Layout.Font;
public byte[] ConvertHtmlTextToPDF(string htmlText)
{
ConverterProperties properties = new ConverterProperties();
// 第三個參數需為True,先抓主機的預設,讓中文可以顯示
DefaultFontProviderprovider = new DefaultFontProvider(true, true, true);
FontProvider fontprovider = new FontProvider(provider.GetDefaultFontFamily());
// 加入微軟正黑體 (如果要用預股的系統字體,不想用微軟正黑體,上面的provider一定要加)
fontprovider.AddFont("C:/Windows/Fonts/msjh.ttc,1");
properties.SetFontProvider(fontprovider);
// 接下來把html語法輸出為PDF
MemoryStream baos = new MemoryStream();
PdfDocument temp = new PdfDocument(new PdfWriter(baos));
// PageSize為A4
temp.SetDefaultPageSize(PageSize.A4);
// HtmlConverter是讀html語法的關鍵,需要再下載itext7.pdfhtml 這個package - https://www.nuget.org/packages/itext7.pdfhtml
HtmlConverter.ConvertToPdf(htmlText, temp, properties);
return baos.ToArray();
}
原來專案的是bootstrap3的版本,有一些畫面想升級到bootstrap5
在載入js的 @Scripts.Render("~/bundles/bootstrap5") 出現 「並未將物件參考設定為物件的執行個體」。
解法 把 "new ScriptBundle" 改為 "new Bundle"
// 原來 bootstrap3 js
bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include("~/Scripts/bootstrap.min.js","~/Scripts/respond.min.js"));
// bootstrap5.1.3 js
bundles.Add(new Bundle("~/bundles/bootstrap5").Include("~/Scripts/bootstrap-5.1.3/bootstrap.bundle.min.js"));