csharp / expert
Snippet
Null-Allokations-Puffer mit Stackalloc
Für performance-kritische und sicherheitssensible Aufgaben bietet stackalloc Speicher, der automatisch freigegeben wird, wenn die Methode zurückkehrt. Die Verwendung mit Span<T> bietet eine sichere Hülle, die typische Pufferüberlauf-Schwachstellen im Zusammenhang mit rohen Pointern verhindert.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public unsafe void HashSecret(ReadOnlySpan<byte> data){// Allocates 64 bytes on the stack, bypassing the GC heap entirelySpan<byte> buffer = stackalloc byte[64];if (data.Length > buffer.Length)throw new ArgumentException("Data too large");data.CopyTo(buffer);// Security: Clear the sensitive data from the stack before returningbuffer.Clear();}
Erklärung
1
stackalloc byte[64]
Allokiert Speicher direkt auf dem Ausführungs-Stack des aktuellen Threads.
2
buffer.Clear()
Überschreibt den Speicher mit Nullen, um sicherzustellen, dass sensible Daten nicht im RAM verbleiben.