Comments 11
Кэшировать парсинг коротких строк это... даже не знаю с чем сравнить.
Особая одаренность нужна такого креатива.
Тут хотя бы нужно послать объём данных сравнимый с объёмом памяти сервера. А я видел эпичную ошибку http-сервера, где сервер резервировал оперативную память чтобы распарсить запрос на основании "Content-Length" из запроса. Таким образом, сервер ронялся легко и непринужденно с затратой минимума ресурсов атакующим.
Причем для парсинга Enum вполне можно было сделать что-то полезное, скажем использовать perfect hashing (если .net этого уже не делает) если это действительно важно по производительности. Но кеширование, особенно не найденных строк, это запредельный креатив.
Зачем там кеш, если набор имён для Enum известен, либо это число, которое кешировать дороже чем парсить.
Для Flags всё равно надо делать парсинг.
Поэтому в питоне к примеру обычно используют lru_cache
, с ограничением на размер, а просто кэш - это потенциальный бесконечный пожиратель памяти. В целом весёлый случай, да.
Не думал, что можно зарегать CVE для какой-то маленькой непонятной библиотеки.
И зачем вообще кому-то нужна эта библиотека?
Парсинг string в enum ценой в 50 Гб: разбираем уязвимость CVE-2020-36620