在新的凤凰编程书中,Chris McCord说这是关于使用字符串和原子键进行控制器动作参数:
在我们控制器的世界动作中,外部参数具有字符串键,“name”=> name,在内部我们使用name:name。这是整个凤凰城遵循的惯例。外部数据是不安全的,所以我们明确匹配字符串键,然后我们的应用程序边界如控制器和通道将它们转换为atom键,我们将依赖于Phoenix内的其他任何地方。
但是,我不清楚为什么使用字符串键比原子键更安全。为什么字符串键在这里更安全?
答案 0 :(得分:25)
默认情况下,Erlang VM中的最大原子数为1048576.因此,通过将外部值转换为原子,您将填充全局原子表,而不是垃圾回收。因此,您很容易受到拒绝服务攻击。