Nascondere il codice sorgente JavaScript

9

In un'app web dovrebbe cercare di nascondere il più possibile il codice, ad esempio dalla sorgente della vista? In particolare, mi chiedevo se JavaScript fosse nascosto, specialmente quelli usati per Ajax? Stavo pensando che se il JavaScript fosse un file esterno il file non potrebbe essere sul server web o limitato usando .htaccess

EDIT: Mi rendo conto che non posso impedire completamente all'utente di vedere JavaScript come è interpretato sulla loro fine. Tuttavia mi stavo chiedendo se ci sia un punto nel distoglierli dalla visualizzazione di tale codice, ad esempio rendendolo leggermente più difficile del semplice digitare www.mywebsite.com/how_login_is_done.js

    
posta Celeritas 14.02.2013 - 18:25
fonte

5 risposte

38

Il codice Javascript viene eseguito sul browser client, quindi il browser client vede il codice e ogni utente può ottenerlo. Nella migliore delle ipotesi puoi nascondere il codice in modo da (cercare di) nascondere il suo significato e comportamento. L'offuscamento non scoraggerà gli attaccanti motivati (li renderà solo un po 'più arrabbiati), quindi non sarebbe saggio utilizzarlo come base per il tuo modello di sicurezza.

Se vuoi nascondere il codice, non inviarlo alla macchina dell'attaccante; tienilo sul lato server.

    
risposta data 14.02.2013 - 18:47
fonte
14

Questo non è possibile perché non puoi imporre il comportamento di un cliente. Qualsiasi richiesta fatta dal cliente può essere intercettata e manipolata con TamperData o BURP. Qualsiasi JS in esecuzione su un client può essere debugato usando FireBug.

Ho visto alcuni sviluppatori seguire il percorso di (in) sicurezza attraverso l'oscurità , che considero essere attentamente vulnerabilità progettata che dovrebbe essere evitata del tutto.

    
risposta data 14.02.2013 - 18:33
fonte
11

Innanzitutto, qualsiasi javascript sul lato server che è possibile eseguire (ad es., se il server web è node.js ) dovrebbe essere nascosto ai visitatori. Qualsiasi javascript lato client deve essere scaricato dagli utenti per essere eseguito sui loro browser e non può essere nascosto. Puoi minimizzare / uglify il tuo codice e se vuoi, e non dovresti sentirti obbligato a servire anche la versione originale non miniata . Tuttavia, hanno ancora un codice minisito completamente funzionale sulla loro macchina; la differenza principale è che la versione minificata non ha più nomi descrittivi convenienti da analizzare per gli umani. Ciò rende un po 'più difficile passare attraverso la logica lato client, ma è relativamente semplice da fare come si ha un debugger JS integrato nella maggior parte dei browser moderni.

In conclusione: non puoi assumere o affidarti al fatto che il tuo javascript lato client sia segreto: è gestito dal browser.

    
risposta data 14.02.2013 - 19:32
fonte
0

Opzioni:

  • Carica il codice JavaScript lato client propiziatorio dopo che l'utente ha effettuato l'accesso al sito web.
  • Se non vuoi ancora che gli utenti autenticati vedano il codice JS, carica un JS sul client che chiama un altro file JS che gira sul server o chiama un servizio come WebAPI. Ovviamente, vuoi proteggere il canale di comunicazione, magari usando HTTP.
risposta data 18.12.2014 - 08:04
fonte
0

Il compressore yui non rende difficile la leggibilità umana? In ogni caso, non si dovrebbe fare la convalida solo dal lato client. Ricorda, non è chiamato server client per niente, quindi lascia che il server faccia la maggior parte del lavoro. La cosa da ricordare è che il world wide web non è mai stato pensato per essere opaco al punto finale. Questo moniker appartiene alle applicazioni native.

    
risposta data 18.12.2014 - 14:27
fonte

Leggi altre domande sui tag