2
理论上可以通过在记忆中创建太多原子来取消Phoenix/Elixir应用程序。由于原子不是垃圾收集,这可能会导致内存溢出。我可以想象,攻击者可能会使用用户输入(例如通过表单/ REST API)来创建任意数量的原子,足以导致应用程序崩溃。Phoenix应用程序中可能的DoS是否需要进一步消毒用户输入?
当然凤凰似乎已经做得相当不错了。所以,如果我张贴这一个测试应用程序:
POST /api/ddos HTTP/1.1
Host: localhost:4000
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
key=value
并处理它与一个简单的控制器:
def ddos(conn, params) do
IO.puts(inspect(params))
conn
|> put_status(200)
|> json params
end
在IEX结果是
%{"key" => "value"}
是否有其他注意事项我必须采取措施来防止这种攻击?