2015-12-24 18 views
13

nella nuova programmazione Phoenix libro, Chris McCord dice questo sull'utilizzo di chiavi di stringa e Atom per params azione di controllo:chiavi Atom vs chiavi stringa a Phoenix

Nell'azione mondo nei nostri controllori, i parametri esterni hanno chiavi stringa, "nome" => nome, mentre internamente usiamo nome: nome. Questa è una convenzione seguita in tutta Phoenix. I dati esterni non sono sicuri, quindi corrispondiamo in modo esplicito alle chiavi delle stringhe, quindi i nostri limiti di applicazione come controller e canali li convertiranno in chiavi di atomi su cui faremo affidamento ovunque all'interno di Phoenix.

Ma, non mi è chiaro perché l'utilizzo delle chiavi di stringa sia più sicuro delle chiavi atom. Perché le chiavi stringa sono una soluzione più sicura qui?

risposta

19

Per impostazione predefinita, il numero massimo di atomi nella macchina virtuale Erlang è 1048576. Quindi convertendo valori esterni in atomi si sta riempiendo la tabella atom globale, che non è raccolta dati inutili. Quindi, si diventa vulnerabili a un attacco denial of service.

Source

Relevant SO answer

+0

Ah, va bene, che ha un senso. Grazie! –