Questo è un problema su chi controlla il codice. Diamo per scontato che ci siano alcuni framework moderni come node per JavaScript sul lato server.
Le lingue stesse non sono necessariamente più vulnerabili. La maggior parte dei difetti non sono i risultati del linguaggio sottostante, ma dei vari controlli logici, sensibilizzazione di input, ecc.
Detto questo, non è possibile controllare il lato client del codice, il che significa che l'utente locale può modificarlo. Può anche essere modificato da un attacco man-in-the-middle sulla rete o da un attacco man-in-the-browser in cui l'utente malintenzionato ha compromesso il computer / browser locale.
Sul lato server, dovrebbero entrare nel tuo server per modificare il codice. Tuttavia, ciò non significa che il codice sia necessariamente più sicuro.
Sebbene sia possibile modificare localmente JavaScript tramite l'ispettore del codice, se hai fatto qualcosa di malevolo, lo faresti tu stesso. Solo perché si cambia il codice non significa che influenzerà altri utenti. Tuttavia, è possibile creare attacchi contro la richiesta di pagina che si invierà a qualcun altro, il che si tradurrà in XSS o CSRF. Ciò comporterebbe l'esecuzione di un attacco contro l'utente. Allo stesso tempo, è possibile modificare la richiesta in modo che richieste dannose o dati vengano inviati al server che provocano un overflow del buffer o un'iniezione di codice (ad es. SQL injection).
Una delle differenze è che puoi creare più facilmente un attacco se hai accesso al codice. Dato che puoi vedere la fonte dell'HTML e del JavaScript, potrebbe essere più facile creare un exploit, ma la stessa conoscenza potrebbe portare a creare un'iniezione SQL.
Ora, fino all'ultimo punto. Dovresti assicurarti che tutti i tuoi controlli di sicurezza siano eseguiti sul lato server, perché non puoi fidarti della convalida lato client dal momento che influisce solo su ciò che accade nel browser. Un utente malintenzionato localmente o MiTM può ancora modificare il traffico HTTP non elaborato, con il risultato che la convalida sul lato client viene ignorata in modo efficace. La convalida lato client è una comodità per gli utenti e consente di salvare alcuni cicli sul server.