Come posso impedire a un utente di modificare il mio codice nel proprio browser?

11

Descrizione

Sto progettando un'applicazione Node.JS (più simile a un sito web completo). L'app invierà cinque file JavaScript e avrà tag <script> che li collegano insieme.

Domanda

Come posso impedire a utenti e autori di attacchi di scrutare e modificare il mio codice ?

  • Un esempio potrebbe essere:

    • Ctrl + Maiusc + I

    • In Devtools , vai a Sorgenti , seleziona un file da modificare (i.e index.html ) e scrivi modifiche

    • Premendo Ctrl + S , si verificherà Modifica dal vivo

Vorrei impedire che l'esempio precedente accada ... È possibile?

Ecco cosa ho pensato:

I'll create another client side JavaScript file, prevent_keys.js

It will listen for Ctrl + Shift + I.

If it returns true (i.e the keys were pressed), it will log the keys.

Tuttavia ciò non impedirà all'utente di utilizzare direttamente Devtools.

    
posta Edwin Pratt 28.10.2018 - 19:07
fonte

3 risposte

35

Non puoi letteralmente impedire agli utenti di accedere e modificare il contenuto che stai inviando. Non hai il controllo del browser, né del browser che utilizzano, né del fatto che stiano effettivamente scaricando il codice sorgente tramite un browser. Stai eseguendo il tuo codice sul dispositivo di un'altra persona. Non devi e non puoi assumere nulla sull'integrità di questo dispositivo.

Se hai codice che non vuoi avere esposto, non inviarlo al browser. Invece, lascia che il browser invii una richiesta a un server su cui esegui il codice segreto.

Come esempio concreto, non controllare le password sul client. Il client potrebbe essere modificato per dire sempre al server "la password era corretta". Invece, l'autenticazione deve avvenire sul tuo server trusted.

    
risposta data 28.10.2018 - 19:25
fonte
23

Non puoi. Una delle regole fondamentali dell'informatica: non ti puoi fidare del cliente . Qualunque schema intelligente tu pensi, posso aggirarlo se ho il controllo del cliente.

    
risposta data 28.10.2018 - 19:23
fonte
2

Perché non vuoi che il codice sia modificato?

Sicurezza? Fiducia? Segreto commerciale?

Quindi non inviare il codice, richiedere al client di inviare una richiesta e restituire un risultato. Forse non è un risultato privato o privilegiato, solo un risultato è sufficiente per molte interfacce utente.

Perché le versioni leggermente modificate del tuo codice stanno danneggiando la tua linea di fondo?

Utilizza un oscuratore di codice, un nome mangler e segmenti di codice triviale.

Queste tecniche aumentano il livello dell'attuale livello di abilità e gli strumenti necessari per apportare una leggera variante al tuo sito web. Tieni presente che queste tecniche possono rallentare il tuo codice, introdurre bug e messaggi di errore interessanti e privi di significato, e tuttavia possono ancora essere superati da qualcuno con gli strumenti e / o le competenze giuste. Quindi considera davvero se ne vale la pena. Alla fine della giornata chiunque potrebbe semplicemente scrivere lo stesso codice.

    
risposta data 24.12.2018 - 01:32
fonte

Leggi altre domande sui tag