Un misuratore della forza della password è un software altamente sensibile alla sicurezza. La password dovrebbe idealmente non essere mai trasmessa al server.
Questo risolve anche il tuo dilemma: implementa il misuratore della forza della password come widget lato client in puro JavaScript. È quindi possibile riutilizzare facilmente questo widget su entrambi i siti Web.
Quando hai sentito che i processi figlio in esecuzione dovrebbero essere evitati per lo più giusto. L'avvio di un processo richiede molto tempo, relativamente parlando, il che limita notevolmente le richieste al secondo che è possibile gestire. Ancor di più quando il processo figlio è un interprete. La gestione degli errori dei processi figli può essere non banale.
Ci sono anche alcuni potenziali problemi di sicurezza: i parametri della riga di comando non sono privati. I segreti dovrebbero essere comunicati attraverso un tubo. Può essere difficile garantire che si stia eseguendo il processo desiderato a causa di funzionalità come la variabile PATH e i collegamenti simbolici del filesystem. Se dovessi eseguire accidentalmente il processo sbagliato, le password potrebbero essere compromesse. Sebbene nessuno di questi problemi di sicurezza debba essere applicato se si utilizza un server privato, è importante considerarli.
Una nota sull'uso di C: è un linguaggio perfettamente raffinato, ma scrivere software sicuro con esso può essere difficile, a meno che tu non sia un programmatore C esperto. È facile introdurre involontariamente buffer overflow ed è facile dimenticare la corretta gestione degli errori. Il principio dell'Uomo Ragno "con grande potere viene una grande responsabilità" si applica.
L'esecuzione di un programma persistente di misuratore della forza della password e la comunicazione con esso tramite socket o un'API potrebbero essere interpretati come una sorta di microservizio. Ciò consentirebbe di riutilizzare lo stesso servizio su più siti Web in quanto il linguaggio di programmazione del microservizio è indipendente dal resto del tuo sito web. Ma come discusso sopra, qui è molto preferibile un'implementazione lato client.