使用Azure Registry Container for Microsoft Defender進行專案資安修補,以CVE-2024-0057為例
我們映像檔(images)是儲存在ACR(Azure Registry Container),在ACR有提供 Microsoft Defender 能提供我們映像檔(images)的安全性報告。
我們映像檔(images)是儲存在ACR(Azure Registry Container),在ACR有提供 Microsoft Defender 能提供我們映像檔(images)的安全性報告。
在進行一個 Visual Studio Core + Entity Framework Core 測試程式時,在新增套件時,不斷跑出「無法載入來源」的錯誤,然後停止安裝。
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
Writing C:\Users\BruceChen\AppData\Local\Temp\tmp1C89.tmp
info : 正在將套件 'Microsoft.EntityFrameworkCore.Sqlite' 的 PackageReference 新增至專案 'D:\Temp\EFCoreFirst\EFCoreFirst.csproj'。
info : 正在還原 D:\Temp\EFCoreFirst\EFCoreFirst.csproj 的封裝...
info : GET https://api.nuget.org/v3-flatcontainer/microsoft.entityframeworkcore.sqlite/index.json
error: 無法載入來源 https://xxxxxxxxxx.pkgs.visualstudio.com/_packaging/BestFeed/nuget/v3/index.json 的服務索引。
error: Response status code does not indicate success: 401 (Unauthorized).
專案升級套件後,Web、API相繼掛點,出現黃白畫面:
Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
https://www.nuget.org/ 提供套件管理的好處大家都知道,處理相依性、web.config組態管理、套件升降級等等方便性,免費。大量佛心人員提供可重覆使用的元件(輪子),免費(絕大多數)。而自從有了 NuGet Server 之後,架設私有NuGet Server就是一件簡單不過的事。對於要上傳套件至 Nuget Server 也走過一些路,最早是用 NuGet Package Explorer 發行與管理,後來知道了 NuGet Packager 這個好物,可以直接從 Visual Studio 進行發行,超高興的。不過好景不長,大家又開始流行 DevOps,希望往自動化更進一步,所以我們又開始在VSTS上進行 Team Build + Release Management 發行至 Microsoft Azure 上的站台!
這裡有個很大的問題 Azure Web Site,預設的 NuGet Server 是個公開的環境,除了上傳套件需要 ApiKey 外,其他瀏覽或下載使用很非常自由的。也就是,在非公司內網環境,你的私有套件可能有一天突然就被下載與看光光了。
以前是無解,現在終於有一個很好的選擇:Visual Studio Team Service - Package Management。
同事回報,簽出的專案無法編譯,查看之下發現,原來是新加入套件呈現黃色三角型狀態,直接點擊法(在黃色三角型套件點兩下)無效。刪除重新安裝法(Nuget移除重裝),被版本控管擋下,一堆@#$%^的訊息之後給出的關鍵號碼是「tf40024」,經G大神查詢後,連G大神說都它無能為力。又追到同事的Packags目錄之下,發現該套件目錄之下只有*.nupkg檔,正常是會含lib目錄,lib目錄下會含有此套件應有版本的DLL。
吼,這是誰簽入的啦,抓出去阿魯巴。
罪人小弟我,快回到本機查看。
由於套件是由我的電腦安裝與簽入,所以並不會產生專案無法編譯的情況。由於我想重新簽入含lib目錄與DLL檔的專案,我透過VS2015的Nuget進行了一次降級的動作。但不如人意,在Team Explorer裡看不到降級後的lib內容dll檔案!!!
我知道7月的鬼門開了,但VSO在雲端,應該天上管理,鬼魅們應該還無能力去上天做怪才是。
就在苦無辦法之際,看到一線訊息:
不知道各位讀者有沒有發現,現在各種技術更新的速度越來越快。例如,這個Release Candidates for ASP.NET MVC 5.1, Web API 2.1 and Web Page 3.1消息,明明ASP.NET MVC 5、ASP.NET Web API 2才剛推出沒多久,就馬上有新版本跟著推出。就取得新功能或功能改善而言,這是件好事。當開發者想要嘗試這些Preview或RC功能時,可能會馬上碰壁,而停下了學習的腳步實在可惜。
新增一個ASP.NET MVC 5專案,進行MVC 5.1 RC的安裝:
Install-Package Microsoft.AspNet.Mvc -pre
這裡馬上就碰到無法找到對應語系的套件,進而無法安裝的訊息。
新增一個ASP.NET Web API 2專案,進行Web API 2.1 RC的安裝:
Install-Package Microsoft.AspNet.WebApi -Pre
一樣是無法找到對應語系的套件的問題。
在 WebForm 拜控制項所賜,讓我們可以快速且容易去設置與產出網頁的 SiteMap(中文稱巡覽列、導覽列),不過在 ASP.NET MVC 之下一開始並無控制項觀念,也經常碰到有 WebForm 經驗正在學習 ASP.NET MVC 的新手常問說:WebForm 有什麼控制項的功能,ASP.NET MVC 有沒有。SiteMap 就是常被問到的一項。
說實話,剛接觸 ASP.NET MVC 2 時是比較辛苦,因為沒提供的功能都必須自己手工刻。隨著時間的經過,後來有了 NuGet 的加持直到現在 ASP.NET MVC 4,整個 ASP.NET MVC 上的擴充套件(擴充程式)已經非常完整,今天要介紹的 MvcSiteMapProvider 都一套快速提供 MVC 專案使用的 Sitemap 擴充套件。
首先我們先開一個測試用的 MVC - 網際網路專案,然後開啟【套件管理器主控台】:
PM> Install-Package MvcSiteMapProvider安裝之後,會開啟一個 Mvc.sitemap 的檔案,如果讀者看過 Webform 的 SiteMap 設置檔會有相似的感覺。