共用方式為


「dotnet restore」會稽核可轉移的套件

命令dotnet restore會還原專案的相依性和工具,現在預設會產生可轉移套件的安全性弱點警告。

先前的行為

在 .NET 8 中, 引進 NuGetAudit 來發出具有已知安全性弱點之套件的警告。 根據預設,只會稽核直接套件參考,不過,可以將 屬性變更 NuGetAuditMode 為包含所有套件。

新的行為

從 .NET 9 開始,如果未明確設定, NuGetAuditMode 預設為 all 。 此設定表示 具有已知弱點的可轉移套件(專案直接參考的套件 相依性),現在會導致回報警告。 如果您的專案將錯誤視為警告,此行為可能會導致還原失敗。

導入的版本

.NET 9 Preview 6

中斷性變更的類型

此變更為行為變更

變更原因

具有已知弱點的套件可能會導致您的應用程式遭到惡意探索,即使您的專案未直接參考或使用易受攻擊的套件也一樣。 .NET 9 中的新功能也可讓您更輕鬆地調查套件圖表,並隱藏與應用程式如何使用易受攻擊套件無關的諮詢。

  • 若要明確降低因為警告而中斷組建的這項變更機率,您可以考慮使用 <TreatWarningsAsErrors> 和 , <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors> 以確保環境中仍允許已知的安全性弱點。

  • 使用之類的 dotnet nuget why 工具,尋找導致包含已知弱點之可轉移套件的最上層套件,並嘗試升級它,以查看可轉移的弱點是否消失。 如果沒有,請藉由為其新增 PackageReference ,並將它升級至較新版本,將可轉移套件升級至最上層套件。

  • 如果您想要隱藏特定的諮詢,您可以將專案新增 <NuGetAuditSuppress Include="url" /> 至項目檔,其中 url 是 NuGet 警告訊息中報告的 URL。

    <ItemGroup>
        <NuGetAuditSuppress Include="url" />
    </ItemGroup>
    
  • 如果您只想要警告具有已知弱點的直接套件參考,您可以在項目檔中將 設定為 <NuGetAuditMode> direct

    <PropertyGroup>
      <NuGetAuditMode>direct</NuGetAuditMode>
    </PropertyGroup>
    

另請參閱