elixir phoenix-framework

elixir - Atom keys vs string keys en Phoenix



phoenix-framework (1)

De forma predeterminada, el número máximo de átomos en la máquina virtual de Erlang es 1048576. Por lo tanto, al convertir los valores externos en átomos, está completando la tabla de átomos global, que no se recolecta como basura. Por lo tanto, te vuelves vulnerable a un ataque de denegación de servicio.

Source

Respuesta SO relevante

En el nuevo libro de Programming Phoenix, Chris McCord dice esto sobre el uso de claves de cadena y átomo para los parámetros de acción del controlador:

En la acción mundial en nuestros controladores, los parámetros externos tienen claves de cadena, "nombre" => nombre, mientras que internamente usamos nombre: nombre. Eso es una convención seguida en todo Phoenix. Los datos externos no son seguros, por lo que coincidimos explícitamente con las claves de cadena, y luego los límites de nuestra aplicación como controladores y canales los convertirán en claves de átomos en las que confiaremos en cualquier otro lugar dentro de Phoenix.

Pero, no me queda claro por qué el uso de claves de cadena es más seguro que las claves atom. ¿Por qué las claves de cadena son una solución más segura aquí?