c# opplisting - c# opplisting opplisting - c sharp opplisting - flagg opplistinger

Misbruk i C# Enum: Hvordan enkle flagg forårsaker store sikkerhetsproblemer

Når en enkel C#-enum blir en sikkerhetsrisiko

AC # Enum ser ofte harmløs ut, men den kan lett skape rettighetsfeil hvis verdier overlapper eller validering mangler.
Mange utviklere bruker C# Enum Enum eller flagg-enums for tillatelseskontroll, men hvis du ikke håndhever unike, validerte verdier, brytes logikken stille. Usikkert eksempel, kun for pedagogiske formål.

⚠️Usikkert eksempel, kun for pedagogiske formål. Ikke bruk i produksjon.

				
					public enum UserRole
{
    None = 0,
    User = 1,
    Admin = 2,
    SuperAdmin = 3 // ❌ Overlaps with Admin
}

				
			

Sikker versjon:

				
					public enum UserRole
{
    None = 0,
    User = 1,
    Admin = 2,
    SuperAdmin = 4
}
// # Educational note: Always assign unique power-of-two values for flag enums.


				
			

Pedagogisk merknad: Selv en enkel C-sharp-opplisting som denne kan eksponere kritiske endepunkter hvis ukontrollerte verdier passerer valideringslag.

Vanlige sårbarheter i flagg-enums og C#-enumslogikk

De fleste sikkerhetsproblemer kommer fra flagg-enums eller usikker casting av C#-enum-data.

Ugyldig rollebesetning

⚠️Usikkert eksempel, kun for pedagogiske formål:

				
					var role = (UserRole)Enum.Parse(typeof(UserRole), input);


				
			

Angripere kan sende udefinerte heltall for å utløse uventede logiske baner.

Sikker versjon:

				
					if (!Enum.TryParse(input, out UserRole role) || !Enum.IsDefined(typeof(UserRole), role))
    throw new InvalidOperationException("Invalid role value");

				
			

Pedagogisk merknad: Valider alltid parsede verdier for C#-enum og flagg-enum.

Flagg C#-opplistinger som har gått galt

⚠️Usikkert eksempel, kun for pedagogiske formål:

				
					[Flags]
public enum Permissions
{
    None = 0,
    Read = 1,
    Write = 2,
    Admin = 3 // ❌ Overlaps with Read + Write
}


				
			

Sikker versjon:

				
					[Flags]
public enum Permissions
{
    None = 0,
    Read = 1,
    Write = 2,
    Delete = 4,
    Admin = 8
}

				
			

Pedagogisk merknad: Definer flagg-opplistinger ved å bruke distinkte potenser av to.

Feil definerte flagg-enums er en av de enkleste måtene å forårsake rettighetseskalering i C# enum-logikk.

Fallgruver i serialisering i håndtering av C Sharp-enum

Løs serialisering av C-sharp enum-verdier kan eksponere appen din for inkonsekvente tilstander eller deserialiseringsangrep.

⚠️Usikkert eksempel, kun for pedagogiske formål:

				
					var data = JsonSerializer.Deserialize<User>(payload);

If payload contains "Role": 99, it maps to an invalid c# enum enum value.

				
			

Sikker versjon:

				
					var opts = new JsonSerializerOptions
{
    Converters = { new JsonStringEnumConverter(JsonNamingPolicy.CamelCase, allowIntegerValues: false) }
};
var data = JsonSerializer.Deserialize<User>(payload, opts);



				
			

Pedagogisk merknad: Tillat aldri deserialisering av numerisk enum fra uklarerte inndata.

Forebygging av logikkfeil i C# Enum i DevSecOps Pipelines

DevSecOps-team bør automatisere validering for hver C# Enum-, Ciss-enum- og flagg-enum-definisjon for å forhindre inkonsistente tilstander.

Eksempel, sikker pipeline integrering:

				
					- name: Validate enum definitions
  run: |
    dotnet test --filter Category=EnumValidation
    xygeni validate --rules enums
# Never expose real tokens or internal URLs in pipelines

				
			

Opplæringsmerknad: Statisk analyse kan oppdage overlappende flaggopplistinger, usikker deserialisering og manglende svitsjetilfeller, alt før utrulling.

Oppdage problemer med opplisting og flagg med Xygeni

Xygeni Code Security oppdager automatisk overlappende eller inkonsistente flagg-enumverdier, usikker enumparsing og manglende validering i C#-autorisasjonslogikk.

Xygeni oppdager:

  • Overlappende eller feiljusterte flaggoppsummeringsverdier
  • Usikker C#-enum-parsingslogikk
  • Deserialiseringsfeil i C# enum-bruk
  • Manglende validering eller standardtilfeller i autorisasjonslogikken

Eksempel:

				
					xygeni scan --detect enums
				
			

Pedagogisk merknad: Bruk Xygeni til å håndheve enum-integritet og sikre flagg-enums.

Xygeni validerer enum-definisjoner, oppdager overlappende eller inkonsistente verdier og bruker automatisk håndheving i CI/CD pipelinegjennom:

				
					xygeni validate --rules enums

				
			

Sterk logikk krever sterk skriving og validering

Enten du bruker standard C#-enums eller komplekse flagg-enums, hver verdi må være eksplisitt, validert og testet. Ukontrollerte heltall eller overlappende flagg kan føre til privilegieeskalering, endringer i usikre tilstander og logiske inkonsekvenser. Med Xygeni automatiserer team deteksjonen og valideringen av enum-definisjoner, noe som sikrer sterk typing, forutsigbar logikk og sikker oppførsel fra utvikling til distribusjon.

sca-tools-programvare-verktøy for komposisjonsanalyse
Prioriter, utbedre og sikre programvarerisikoene dine
Få din gratis konto.
Ingen kredittkort kreves.

Sikre programvareutviklingen og -leveringen din

med Xygeni-produktpakken