2015-12-24 1 views
13

In der neuen Programmierung Phoenix Buch, Chris McCord sagt diese Zeichenfolge und Atom-Tasten für Controller-Aktion params über die Verwendung von:Atom Tasten vs String-Schlüssel in Phoenix

In der Welt Aktion in unseren Controllern, die externen Parameter string keys, "name" => name, intern verwenden wir name: name. Das ist eine Konvention in ganz Phoenix. Da externe Daten nicht sicher sind, passen wir sie explizit auf die Zeichenfolgenschlüssel an, und dann werden sie von unseren Anwendungsgrenzen wie Controller und Kanäle in Atomschlüssel umgewandelt, auf die wir überall in Phoenix angewiesen sind.

Aber mir ist nicht klar, warum die Verwendung von Stringschlüsseln sicherer ist als die von Atomschlüsseln. Warum sind String Keys hier eine sicherere Lösung?

Antwort

19

Standardmäßig ist die maximale Anzahl an Atomen in der Erlang-VM 1048576. Indem Sie also externe Werte in Atome umwandeln, füllen Sie die globale Atomtabelle auf, die nicht als Müll gesammelt wird. Dadurch werden Sie anfällig für einen Denial-of-Service-Angriff.

Source

Relevant SO answer

+0

Ah, okay, das Sinn macht. Vielen Dank! –