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


11

Descrizione

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

Domanda

Come posso impedire a utenti e utenti malintenzionati di eseguire il peering e modificare il mio codice ?

  • Un esempio potrebbe essere:

    • Ctrl+ Shift+I

    • In Devtools , vai a Sorgenti , seleziona un file da modificare (ad es. index.html) E scrivi le modifiche

    • Premendo Ctrl+ Scauserà la modifica diretta a verificarsi

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


Ecco cosa ho pensato:

Creerò un altro file JavaScript lato client, prevent_keys.js

Ascolterà Ctrl+ Shift+ I.

Se ritorna true(cioè i tasti sono stati premuti), saranno logi tasti.

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


16
Non puoi impedire a nessuno di vedere o modificare il tuo javascript che viene eseguito nel browser. Non posso.
jfriend00,

7
Solo perché la risposta a una domanda è "Non puoi". Non significa che debba essere sottoposto a downgrade.
RubberDuck,

1
Domanda strettamente correlata: convalida solo JavaScript sull'invio del modulo AJAX . Soprattutto controlla la risposta accettata con il suo banale esempio di come inviare una chiamata POST che, al tuo server, sembra identica a quella proveniente dal tuo client, nonostante non provenga nemmeno da un browser web.
settembre

Risposte:


35

Non puoi letteralmente impedire agli utenti di accedere e modificare i contenuti che li stai inviando. Non hai alcun controllo sul browser o sul browser che utilizzano o se stanno effettivamente scaricando il tuo codice sorgente tramite un browser. Stai eseguendo il tuo codice sul dispositivo di un'altra persona. Non si deve e non si può assumere nulla sull'integrità di questo dispositivo.

Se hai un codice che non vuoi esporre, non inviarlo al browser. Consentire invece al browser di inviare una richiesta a un server in cui si esegue il codice segreto.

Ad esempio concreto, non controllare le password sul client. Il client può essere modificato per dire sempre al server "la password era corretta". Invece, l'autenticazione deve avvenire sul tuo server di fiducia.


4
"Il client può essere modificato per dire sempre al server" la password era corretta "." tosse libssh tosse
Philip Kendall,

Molte grazie! Stavo inviando gestori per il login, il logout e l'iscrizione. L'ho cambiato in rotte nel server.
Edwin Pratt,

23

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


2
Ho spostato tutti i gestori di convalida, caricamento, download e userAccouts () nell'inclusione del server.
Edwin Pratt,

1
"Non puoi fidarti del cliente" è solo un lato della medaglia. L'altro lato dice: "Non sei il proprietario del client". Il browser che esegue javascript non è tuo, il sistema operativo che esegue il browser non è tuo e l'hardware su cui è in esecuzione il browser non è tuo. Qualunque cosa il proprietario di queste cose abbia a che fare con i dati che invii loro non è affar tuo . È una questione di rispetto per i tuoi clienti non tentare di usurpare le loro cose.
cmaster - ripristina monica il

2

Perché non vuoi che il codice venga modificato?

Sicurezza? Fiducia? Segreto commerciale?

Quindi non inviare il codice, fare in modo che il client invii una richiesta e restituisca un risultato. Forse non è un risultato privato o privilegiato, solo un fatto è sufficiente per molte interfacce utente.

Perché le versioni leggermente modificate del tuo codice stanno danneggiando i tuoi profitti?

Usa un osservatore di codice, un mangler di nomi e segmenti di codice banali.

Queste tecniche elevano il livello a livello di abilità effettiva e strumenti necessari per fare una leggera variante del tuo sito web. Basta essere consapevoli del fatto che queste tecniche possono rallentare il codice, possono introdurre bug e messaggi di errore interessanti e insignificanti, e tuttavia possono ancora essere superati da qualcuno con gli strumenti e / o le competenze giusti. Quindi considera davvero se ne vale la pena. Alla fine della giornata chiunque poteva semplicemente scrivere lo stesso codice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.