Länge von Strings zum Schutz vor Buffer-Overflow begrenzen

Die Länge der Strings habe ich in den Objekten begrenzt, um Angriffe durch Buffer-Overflow zu verhindern.

Die Risiken von Buffer-Overflow werden in nachfolgenden Artikel beschrieben.

heise.de - Buffer-Overflows und wie man sich davor schützt

Die Länge des Strings wird durch die Attribute nicht gekürzt. Aber die Prüfung mit !ModelState.IsValid gibt zurück, dass das Model nicht Valid ist, wenn der String länger ist. Dann muss die Aktion abgebrochen werden. Zum Beispiel ein Login mit Kennwortvergleich. Dies ist eine der Möglichkeiten, um einen Angriff durch Buffer-Overflow zu vermeiden.

Zudem habe ich auch die Mindestlänge festgelegt. Wenn auf die Strings im Model zugegriffen wird, dann müssen diese mit HtmlEncoder.Default.Encode("string") abgerufen werden. Dies kann eine NullException auslösen, wenn der String Null ist. Da vorher mit ModelState.IsValid geprüft wird, kann die Exception vermieden werden. Denn wenn die Mindestlänge nicht stimmt, dann ist das Model nicht valid.

Wenn in den Projekteigenschaften kein unsicherer Code zugelassen ist, dann ist dies ebenfalls ein Schutz. Es muss aber daran gedacht werden, dass Daten an Assemblies oder Anwendungen übereben werden können, wo die Vorkehrungen und Einstellungen sowie der Code unbekannt sind.

Auch weitere Maßnahmen, wie die Festlegung des requestLimits können zur Sicherheit beitragen.