2015-12-24 4 views
13

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

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

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

ответ

19

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

Source

Relevant SO answer

+0

Ах, хорошо, что имеет смысл. Благодаря! –

Смежные вопросы