Alcune cose veloci che ti vengono in mente:
Qual è il metodo di immissione? Se l'utente inserisce la password nella "chatbox", si corre il rischio che qualcuno guardi semplicemente la spalla degli utenti e visualizzi la password.
Utilizzerai un limite di velocità? I messaggi SMS, anche se molto economici, non sono liberi di inviare. Non vuoi pagare il conto quando Joe decide di inviare dieci mila messaggi di reimpostazione della password a Carl. Dovrai inoltre limitare le voci di limite, per evitare che qualcuno faccia di brute forzando tutte le combinazioni possibili. Assicurati di farlo sia con nome utente che IP.
Su questo argomento, è necessario disporre di un codice di autenticazione abbastanza lungo: la maggior parte dei siti 2FA utilizza 2FA come metodo di autenticazione di backup, non le "chiavi del regno". Poiché ti stai affidando pesantemente al codice generato dal server, dovrai assicurarti che sia abbastanza lungo da rendere la forza bruta distribuita non fattibile.
Dovrai assicurarti di spiegare qual è il messaggio, nel corpo del messaggio. Ad esempio, "Il tuo codice di reset della password di WidgetCo è: 123456" - in questo modo, le persone possono sapere di essere sotto attacco, invece di ottenere solo un mucchio di numeri casuali sul testo (anche se non c'è altra autenticazione, gli utenti possono " Fare molto anche se sanno che sono sotto attacco).
Infine, tieni presente che sei anche in balia della sicurezza dei gestori di telefonia mobile - tutto questo è inutile se riesco a chiamare Verizon e gli ingegneri sociali a dirmi il testo.
Nel complesso, non sono sicuro che questa sia una grande idea: usare un'e-mail per il recupero (con 2FA) avrebbe più senso, e usare OAuth sarebbe molto più sicuro, pur essendo molto meno un mal di testa per te.