Swashbuckle.AspNetCore 10.0.1

Swagger從.Net 9後就沒有再內建了,需自行安裝下載Swashbuckle.AspNetCore,

2025/11,Swashbuckle.AspNetCore 升級到 10.0.1 遇到一個問題,

原本設定讓Swagger UI 知道要幫所有需要認證的 API 自動帶上 Authorization: Bearer <token> 做驗證的這段程式碼,

但Swashbuckle.AspNetCore升級到10版後,因為沒有OpenApiReference物件可以宣告使用,compiler會不過。

請改成以下寫法,改用 OpenApiSecuritySchemeReference 物件

湯瑪的吳 發表在 痞客邦 留言(0) 人氣()

[python] os.environ.get 環境變數取得

透過SSE的方式,使用open ai的api服務,但不希望把api key值寫在程式碼中,
利用環境變數的方式來取得,例  api_key = os.environ.get("OPENAI_API_KEY")
.env 檔放在根目錄,內容也無誤,但還是抓不到值。

湯瑪的吳 發表在 痞客邦 留言(0) 人氣()

Server-Sent Events, SSE 換行符號無法

透過 Server-Sent Events, SSE 把資料往前端送的時侯,很有可能會發生處理 Markdown 格式無法正確顯示。
但是實際上我們從後端(server端)送出的資料格式是正確的,
但前端顯示的Markdown 處理,在針對換行、標記符號(如 * 或 **),可能無法正確呈現。

湯瑪的吳 發表在 痞客邦 留言(0) 人氣()

.NET Core 憑證鏈結是由不受信任的授權單位所發出的-

微軟釋出新的SQL Server資料連接程式後,原先System.Data.SqlClient除重大變更外已經很少更新,目前(2024/1月)最新版本是4.8.6,上次更新已經是2022年/11月,這四年內只更新了5次。

想讓專案走得長久,是可以考慮換成Mircosoft.Data.SqlClient ,他是System.Data.SqlClient的新版本,程式只需要變更using參照引用之外,自行開發的程式碼基本上是不需做什麼大異動。

更新完後,雖然程式碼compiler成功,但執行過程中確出現「憑證鏈結是由不受信任的授權單位所發出的」錯誤,原因在於原先System.Data.SqlClient預設加密憑證OFF,而Microsoft.Data.SqlClient預設會啟用加密憑證,所以執行時會驗證憑證,而大多數的SQL雖然支援TLS加密,但大部份都是自簽憑證,所以就會丟出失敗訊息。

解決方法:除了可以在我們資料庫連線字串(通常在appsettings.json中),加上;TrustServerCertificate=true來強制用戶端信任憑證不進行驗證。或是直接在程式中判斷並加上TrustServerCertificate參數(請參考暗黑大的做法)。

湯瑪的吳 發表在 痞客邦 留言(0) 人氣()

ASP.NET Core 利用靜態類別的方法來存取Confi

.NET Core 目前大多都是透過相依性注入(Dependency Injection)的方式來有效管理程式碼,方便大家在program.cs中先建置.NET Core 程式專案的一些基本設置,像是相依性插入 (DI)、設定、中介軟體等,當專案一啟動時就被建置或設定。

通常大家會習慣將一些資訊記錄有appsetting.json檔中,像是資料庫的連線,.NET Core初期仍需要安裝Microsoft.Extensions.Configuration 套件,來取得appsetting.json內容,以 .NET Core 6 為例,後期的.NET Core已經內建Configuration。 

目前遇到的例子是,早期自行撰寫的共用物件(DBUtil)已經在各程式中被廣泛引用,目前先不打算異動原來的程式碼,原因是如果一改的話,所有有呼叫到的程式都要修改,所以我們並非透過相依性注入(Dependency Injection),而是透過中介的靜態類別,像建立一個Single Object  。

作法:在program.cs中先設置好Configuration並取得appsetting.json的資料庫連結資訊,再把Configuration傳遞到手動新增的靜態類別ConfigurationHelper中,最後在共用物件(DBUtil)的建構子中來取得Configuration。

1.先新增一個靜態類別叫ConfigurationHelper

湯瑪的吳 發表在 痞客邦 留言(0) 人氣()

ASP.NET Core 利用靜態類別的方法來存取Confi

.NET Core 可以透過相依性注入(Dependency Injection)的方式來有效管理程式碼,以 .NET Core 6 為例,可以在program.cs中先建置.NET Core 程式專案的一些基本設置,像是相依性插入 (DI)、設定、中介軟體等,當專案一啟動時就執行。

但我希望能在program.cs中設置好Configuration後,把Configuration傳遞到我們自已所寫的物件類別,而不是透過相依性注入(Dependency Injection)的方式來取得。

1.先新增一個靜態類別叫ConfigurationHelper

湯瑪的吳 發表在 痞客邦 留言(0) 人氣()

ASP.NET Core 利用靜態類別的方法來存取Confi

.NET Core 目前大多都是透過相依性注入(Dependency Injection)的方式來有效管理程式碼,以 .NET Core 6 為例,可以在program.cs中先建置.NET Core 程式專案的一些基本設置,像是相依性插入 (DI)、設定、中介軟體等,當專案一啟動時就執行。

目前遇到的例子是,早期寫好的共用物件(DBUtil)已經在各程式中被廣泛引用,目前先不異動原來的程式碼(以前有用DI就不會有這問題),而不是透過相依性注入(Dependency Injection)的方式來取得。

作法:在program.cs中先設置好Configuration並取得appsetting.json的資料庫連結資訊,再把Configuration傳遞到手動新增的靜態類別ConfigurationHelper中,最後在共用物件(DBUtil)的建構子中來取得Configuration。

1.先新增一個靜態類別叫ConfigurationHelper

湯瑪的吳 發表在 痞客邦 留言(0) 人氣()

ASP.NET Core 利用靜態類別的方法來存取Confi

.NET Core 目前大多都是透過相依性注入(Dependency Injection)的方式來有效管理程式碼,以 .NET Core 6 為例,可以在program.cs中先建置.NET Core 程式專案的一些基本設置,像是相依性插入 (DI)、設定、中介軟體等,當專案一啟動時就被建置或設定。

目前遇到的例子是,早期寫好的共用物件(DBUtil)已經在各程式中被廣泛引用,目前先不異動原來的程式碼(以前有用DI就不會有這問題),並非透過相依性注入(Dependency Injection)來取得,而是透過一個中介的靜態類別。

作法:在program.cs中先設置好Configuration並取得appsetting.json的資料庫連結資訊,再把Configuration傳遞到手動新增的靜態類別ConfigurationHelper中,最後在共用物件(DBUtil)的建構子中來取得Configuration。

1.先新增一個靜態類別叫ConfigurationHelper

湯瑪的吳 發表在 痞客邦 留言(0) 人氣()

JQuery版本過舊(資安風險)

系統中用太舊的版本JQuery會有資安風險的問題,舊版(尤其是1.12以前)的JQuery或許有一個或多個弱點,

要怎麼知道自已是用什麼版本的JQuery,先到Chrome的console mode輸入  jQuery.fn.jquery

接著我們使用「jQuery Migrate 」工具,來分析程式中需要修正的語法,

畢竟不同的版次語法有一些已經停用,參考以下「jQuery Migrate 」做法 
https://github.com/jquery/jquery-migrate/#readme

湯瑪的吳 發表在 痞客邦 留言(0) 人氣()

X-Frame-Options 標頭 (資安風險)

X-Frame-Options 標頭用來阻擋 Clickjacking (點擊劫持) 這個行為

有三種情境可以設定 

  1. DENY :禁止任何網站的嵌入

  2. SAMEORIGIN :只允許同網站的嵌入,但是Scheme,Host,Port 都要一樣

  3. ALLOW-FROM uri:允許開放特定網站的嵌入

湯瑪的吳 發表在 痞客邦 留言(0) 人氣()

IIS、ASP.NET或MVC的平台資訊揭露 (資安風險)

伺服器主機或是開發平台的資訊遮蔽,在於減少風險或是惡意攻擊的發生,尤其是程式版本或主機資訊的揭露有可能會引來惡意使用者的針對性測試或零時差攻擊。

在IIS主機中,可透過「設定編輯器」在system.webServer下的security設定 requestFiltering removeServerHeader="true",來遮蔽相關資訊

湯瑪的吳 發表在 痞客邦 留言(0) 人氣()

"未加密的__VIEWSTATE參數"屬於風險等級-中
這個參數的目地在於,傳統的ASP.NET表單畫面中,如果送出失敗時,不去清空原來輸入的相關欄位內容,按回上一頁後會把之前所輸入的值帶回來,不過這個未加密的參數所造成的漏容可能會洩漏敏感資料。
解決方法:

湯瑪的吳 發表在 痞客邦 留言(0) 人氣()

Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。