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(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(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.
- 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.







