Megosztás a következőn keresztül:


C#-fordító beállításai a biztonsághoz

Az alábbi beállítások szabályozzák a fordító biztonsági beállításait. Az új MSBuild szintaxis félkövér formátumban jelenik meg. A régebbi csc.exe szintaxis a .code style

  • PublicSign / -publicsign: Nyilvánosan aláírja a szerelvényt.
  • DelaySign / -delaysign: Késleltetheti a szerelvény aláírását az erős névkulcs nyilvános részének használatával.
  • KeyFile / -keyfile : Adjon meg egy erős névkulcsfájlt.
  • KeyContainer / -keycontainer: Adjon meg egy erős névkulcstárolót.
  • HighEntropyVA / -highentropyva: Magas entrópia címtérelrendezés (ASLR) engedélyezése

PublicSign

Ez a beállítás azt eredményezi, hogy a fordító nyilvános kulcsot alkalmaz, de valójában nem írja alá a szerelvényt. A PublicSign beállítás egy kicsit is beállítja a szerelvényt, amely közli a futtatókörnyezettel, hogy a fájl aláírása folyamatban van.

<PublicSign>true</PublicSign>

A PublicSign beállítás használatához a KeyFile vagy a KeyContainer beállítás szükséges. A KeyFile és a KeyContainer beállításai határozzák meg a nyilvános kulcsot. A PublicSign és a DelaySign lehetőségek kölcsönösen kizárják egymást. Néha "hamis jelnek" vagy "OSS-jelnek" is nevezik, a nyilvános aláírás tartalmazza a nyilvános kulcsot egy kimeneti szerelvényben, és beállítja az "aláírt" jelzőt. A nyilvános aláírás valójában nem írja alá a szerelvényt titkos kulccsal. A fejlesztők nyilvános előjelet használnak nyílt forráskódú projektekhez. Kapcsolatok kiadott "teljesen aláírt" szerelvényekkel kompatibilis összeállítási szerelvényeket, ha nem férnek hozzá a szerelvények aláírásához használt titkos kulcshoz. Mivel kevés fogyasztónak kell ellenőriznie, hogy a szerelvény teljes mértékben aláírt-e, ezek a nyilvánosan összeállított szerelvények szinte minden olyan helyzetben használhatók, ahol a teljesen aláírt szerelvényeket használnák.

DelaySign

Ez a beállítás azt eredményezi, hogy a fordító helyet foglal a kimeneti fájlban, hogy később digitális aláírást lehessen hozzáadni.

<DelaySign>true</DelaySign>

Ha teljesen aláírt szerelvényt szeretne használni, használja a DelaySign parancsot. Használja a DelaySign parancsot , ha csak a nyilvános kulcsot szeretné elhelyezni a szerelvényben. A DelaySign beállítás csak a KeyFile vagy a KeyContainer használatával használható. A KeyContainer és a PublicSign beállításai kölcsönösen kizárják egymást. Ha teljes mértékben aláírt szerelvényt kér, a fordító kivonatot küld a jegyzékfájlt tartalmazó fájlról (szerelvény metaadatairól), valamint a titkos kulccsal kivonatoló jelekről. Ez a művelet létrehoz egy digitális aláírást, amely a jegyzékfájlt tartalmazó fájlban van tárolva. Ha egy szerelvény aláírása késik, a fordító nem számítja ki és tárolja az aláírást. Ehelyett a fordító helyet foglal a fájlban, hogy később hozzá lehessen adni az aláírást.

A DelaySign használatával a tesztelő a szerelvényt a globális gyorsítótárba helyezheti. A tesztelés után teljes mértékben aláírhatja a szerelvényt úgy, hogy a titkos kulcsot a szerelvénybe helyezi a Assembly Linker segédprogrammal. További információ: Erős elnevezett szerelvények létrehozása és használata, valamint a szerelvény aláírásának késleltetése.

Keyfile

Megadja a titkosítási kulcsot tartalmazó fájlnevet.

<KeyFile>filename</KeyFile>

file az erős névkulcsot tartalmazó fájl neve. Ha ezt a beállítást használja, a fordító beszúrja a nyilvános kulcsot a megadott fájlból a szerelvényjegyzékbe, majd aláírja a végső szerelvényt a titkos kulccsal. Kulcsfájl létrehozásához írja be sn -k file a parancssorba. Ha a -target:modullal fordít, a kulcsfájl neve a modulban lesz tárolva, és az AddModules használatával létrehozott szerelvénybe van beépítve. A titkosítási adatokat a KeyContainerrel is átadhatja a fordítónak. Ha részlegesen aláírt szerelvényt szeretne használni, használja a DelaySign függvényt. Ha a KeyFile és a KeyContainer is ugyanabban a fordításban van megadva, a fordító először megpróbálja a kulcstárolót. Ha ez sikerül, a rendszer aláírja a szerelvényt a kulcstárolóban található információkkal. Ha a fordító nem találja a kulcstárolót, megpróbálja a KeyFile-tal megadott fájlt. Ha ez sikerül, a rendszer aláírja a szerelvényt a kulcsfájl adataival, és a kulcsinformációk a kulcstárolóban lesznek telepítve. A következő összeállításban a kulcstároló érvényes lesz. Egy kulcsfájl csak a nyilvános kulcsot tartalmazhatja. További információ: Erős elnevezett szerelvények létrehozása és használata, valamint a szerelvény aláírásának késleltetése.

KeyContainer

Megadja a titkosítási kulcstároló nevét.

<KeyContainer>container</KeyContainer>

container az erős névkulcs tárolójának neve. A KeyContainer beállítás használatakor a fordító létrehoz egy megosztható összetevőt. A fordító beszúr egy nyilvános kulcsot a megadott tárolóból a szerelvényjegyzékbe, és aláírja a végső szerelvényt a titkos kulccsal. Kulcsfájl létrehozásához írja be sn -k file a parancssorba. sn -i telepíti a kulcspárt egy tárolóba. Ez a beállítás nem támogatott, ha a fordító a CoreCLR-en fut. Ha szerelvényt szeretne aláírni a CoreCLR létrehozásakor, használja a KeyFile lehetőséget. Ha a TargetType használatával fordít, a kulcsfájl neve a modulban lesz tárolva, és be lesz építve a szerelvénybe, amikor ezt a modult az AddModules szerelvénybe fordítja. Ezt a lehetőséget egyéni attribútumként (System.Reflection.AssemblyKeyNameAttribute) is megadhatja a forráskódban bármely közbülső nyelv (CIL) modul esetében. A titkosítási adatokat a KeyFile használatával is átadhatja a fordítónak. A DelaySign használatával adja hozzá a nyilvános kulcsot a szerelvényjegyzékhez, de a szerelvényt a tesztelésig aláírja. További információ: Erős elnevezett szerelvények létrehozása és használata, valamint a szerelvény aláírásának késleltetése.

HighEntropyVA

A HighEntropyVA fordítóbeállítás azt jelzi a Windows kernelnek, hogy egy adott végrehajtható fájl támogatja-e a magas entrópiás címtérelrendezés (ASLR) használatát.

<HighEntropyVA>true</HighEntropyVA>

Ez a beállítás azt határozza meg, hogy egy 64 bites végrehajtható vagy a PlatformTarget-fordító által megjelölt végrehajtható fájl támogatja a magas entrópiai virtuális címteret. A beállítás alapértelmezés szerint engedélyezve van az összes .NET Standard és .NET Core verzióhoz, és .NET-keretrendszer verziót a .NET-keretrendszer 4.5-ös verziótól kezdve.

A HighEntropyVA lehetőség lehetővé teszi, hogy a Windows kernel kompatibilis verziói magasabb entrópiát használjanak, amikor véletlenszerűen véletlenszerűen véletlenszerűvé teszik egy folyamat címterének elrendezését az ASLR részeként. A magasabb szintű entrópia azt jelenti, hogy nagyobb számú cím foglalható le memóriarégiókhoz, például halmokhoz és halmokhoz. Emiatt nehezebb kitalálni egy adott memóriarégió helyét. A HighEntropyVA fordítóhoz a cél végrehajtható, és minden olyan modul, amelytől függ, képes kezelni a 4 gigabájtnál (GB) nagyobb mutatóértékeket, amikor 64 bites folyamatként futnak.