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.
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í?