Atom keys vs string keys в Фениксе

в новой книге программирования Phoenix Крис Маккорд говорит об использовании клавиш string и atom для параметров действий контроллера:

в мировом действии в наших контроллерах внешние параметры имеют строковые ключи, "name" = > name, а внутри мы используем name: name. Это Конвенции в Фениксе. Внешние данные небезопасны, поэтому мы явно совпадаем по строковым ключам, а затем наши границы приложения, такие как контроллеры и каналы, преобразуют их в атомы ключи, на которые мы будем полагаться везде внутри Феникса.

но мне непонятно, почему использование строковых ключей более безопасно, чем ключи atom. Почему string keys является более безопасным решением здесь?

1 ответов


по умолчанию максимальное число атомов в виртуальной машине Erlang равно 1048576. Таким образом, Преобразуя внешние значения в атомы, вы заполняете глобальную таблицу атомов, которая не является собранным мусором. Таким образом, вы становитесь уязвимым для атаки отказа в обслуживании.

источник

уместно так ответить