Подтвердить что ты не робот

Атомные ключи против строковых ключей в Фениксе

В новой книге "Программирование Феникса" Крис МакКорд говорит об использовании строковых и атомных ключей для параметров действия контроллера:

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

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

4b9b3361

Ответ 1

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

Источник

Соответствующий ответ SO