Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832

    Nascondere o limitare accesso a codice jQuery

    ciao a tutti.
    sto costruendo un sito che usa massivamente jQuery.

    il punto della questione che sta ora sorgendo è che una buona parte del codice "sensibile" è ora esposto alla comoda lettura di tutti.

    al momento ogni pagina ha il suo codice comodamente dichiarato nella <head> della pagina: ero in fase di programmazione ancora "base", fino a poco tempo fa, per cui mi faceva comodo avere il codice js nella stessa pagina per potervi lavorare sopra più rapidamente.

    ora però sto iniziando ad ottimizzare, raffinare e sistemare un pò di cose e mi sovviene che, ad esempio con una chiamata ajax(), le variabili POST sono tutte belle ed esposte.
    è chiaro che non siano poi così chiare "r=xx&rcv=ddf", ma mi pare ovvio che con santa pazienza, per quanto si possa poi depurare il codice che arriva al server, mi pare una sorta di "falla" di sicurezza, che davvero non mi lascia tranquillo.
    in fondo molte chiamate ajax comunicano col server, se dei malintenzionati malfattori (vintage eh ) decidessero di rompere le pillole, basterebbe copiaincollare l'URL che appare in chiaro nella funzione e anche solo impippare il server con mille milla chiamate inutili.

    ciò detto, insomma, stavo pensando di occultare un pò di più il codice...
    avevo immaginato di metterlo in un file esteno, che ne so, "includimi.js" e poi chiamare le funzioni da li.
    ma

    1) non ho ben chiaro come richiamare la funzione jQuery da un file esterno.
    esempio:
    codice:
    $('#img_arrow').mouseover(function(){
    //codice nella pagina attuale
    
    });
    una cosa del genere, se la mettessi in un file esterno, poi come potrei richiamarla?
    se includo il file .js, questa è "automaticamente" attiva?

    2) se pure mettessi i file js in una cartella apposita, poi al fine di non rendere i file scaricabili/leggibili devo modificare le impostazioni di .htaccess giusto?
    ma:
    -> si può impedire lo scaricamento, che so, anche tramite downloaders?
    -> non mi ricordo, forse non lo so proprio, come si impedisce l'accesso ad una cartella specifica. (ammesso che la mia soluzione sia quella buona).


    commenti e consigli, ben accetti!
    grazie


  2. #2
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Puoi mettere il codice js dove ti pare, essendo lato client, non c'è modo di nasconderlo, ed inoltre utilizzando debugger tipo firebug è uno scherzo vedere tutte le richieste che la pagina sta eseguendo e a quale url, che il maleintenzionato potrebbe poi richiamare all'infinito con uno script creando chissà quali danni.

    Anche solo salvando la pagina usando "salva con nome" possiamo scaricare senza problemi tutto il codice js.

    Piuttosto dovresti cercare di proteggere la tua applicazione lato server, una buona soluzione potrebbe essere l'implementazione delle OTP ( one-time password ), ovvero delle stringhe che sono inviate insieme agli altri dati che valgono una sola volta, password generate dalla tua applicazione ed inserite nei form come campo hidden.

    Questa soluzione è implementata anche nel cms Wordpress con il nome di nonce, ovvero number used once.

    Ciao

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma secondo me è uno scruplo tuo, ci sono molti portali (facebook) che fanno uso di jquery massivo e non mi sulta abbiano mai avuto problemi in tal senso e ma non ho mai sentito di problemi/falle di jquery per attacchi tramite ajax.
    L'ipotesi d'inserire un file in una cartella protetta da password il client non può più utilizzare il file (che io sapia) pertanto non credo che sia la strada giusta, forse potesti usare jquery di google, ma non so se offre maggiori sicurezze.


    P.S. A mio avviso non credo che questa sia una tematica js
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924

    Re: Nascondere o limitare accesso a codice jQuery

    Originariamente inviato da lyllo
    ora però sto iniziando ad ottimizzare, raffinare e sistemare un pò di cose e mi sovviene che, ad esempio con una chiamata ajax(), le variabili POST sono tutte belle ed esposte.
    è chiaro che non siano poi così chiare "r=xx&rcv=ddf", ma mi pare ovvio che con santa pazienza, per quanto si possa poi depurare il codice che arriva al server, mi pare una sorta di "falla" di sicurezza, che davvero non mi lascia tranquillo.
    In che cosa consisterebbe la presunta falla? O quale sarebbe la differenza in termini di sicurezza se inviassi i dati in post tramite un form?
    Non sarebbe la stessa cosa?

    Originariamente inviato da lyllo
    basterebbe copiaincollare l'URL che appare in chiaro nella funzione e anche solo impippare il server con mille milla chiamate inutili.
    Anche in questo caso, non sarebbe lo stesso se l'attaccante facesse un attacco DOS/DDOS direttamente richiedendo una o più risorse? In che modo una risorsa richiesta via ajax potrebbe esporti maggiormente?

    Originariamente inviato da lyllo
    ciò detto, insomma, stavo pensando di occultare un pò di più il codice...[/CODE]
    ...

    2) se pure mettessi i file js in una cartella apposita, poi al fine di non rendere i file scaricabili/leggibili devo modificare le impostazioni di .htaccess giusto?
    ma:
    -> si può impedire lo scaricamento, che so, anche tramite downloaders?
    -> non mi ricordo, forse non lo so proprio, come si impedisce l'accesso ad una cartella specifica. (ammesso che la mia soluzione sia quella buona).
    occultare il codice non serve a molto. Chi ha intenzione di tirarti giù un servizio o defacciarti il sito e lo sa fare ha tutti i mezzi per rendere inutili questi tentativi. Inoltre non puoi rendere irraggiungibili gli assets come ipotizzi, altrimenti nemmeno un utente normale porà accedervi.

    Originariamente inviato da lyllo
    commenti e consigli, ben accetti!
    Qualche accorgimento (i primi che mi vengono in mente):

    1) Pianifica inizialmente che la tua applicazione debba funzionare senza javascript. Concentrati da subito sul lato sicurezza e sull'integrità piuttosto che farlo alla fine in modo incosistente.

    2) Non consentire agli script (che poi richiamerai via ajax) di rispondere
    - quando chiamati senza un referrer preciso
    - privi di un token CSRF aggiornato ad ogni chiamata

    3) Predisponi lato server dei meccanismi in modo da limitare un numero eccessivo di chiamate in brevi intervalli di tempo (un po' come per la ricerca nel forum) e per rilevare un eccessivo carico del server (http://php.net/manual/en/function.sys-getloadavg.php)

    4) Nelle richieste effettuate via javascript potresti predisporre un meccanismo di timeout incrementale in modo da aumentare il tempo tra una chiamata ajax e la successiva qualora il server risponda lentamente (o se non risponde affatto). in questo caso considera di troncare del tutto le chiamate ajax se non sono fondamentali per il funzionamento dell'applicazione (ad es. per un autocompletamento automatico). Evita anche di mandare al server richieste simultanee alla stessa risorsa (scartale sul nascere)

    5) Controlla sempre qualsiasi input arrivi allo script, sia get che post (ricorda che se fai uso di eventuali cookies questi viaggiano ad ogni richiesta http e appesantiscono di conseguenza la trasmissione dei dati). Io ad esempio prima di usare i dati controllo a priori che facciano match con determinate espressioni regolari.

    Controlla inoltre che le chiavi di $_GET e $_POST abbiano esattamente le chiavi che ti aspetti, non una di più, non una di meno (ad es. in un form le chiavi sarebbero i 'name' dei vari input) diversamente qualcuno sta cercando di fare una richiesta non prevista/non consentita
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832

    Re: Re: Nascondere o limitare accesso a codice jQuery

    Originariamente inviato da fcaldera

    2) Non consentire agli script (che poi richiamerai via ajax) di rispondere
    - quando chiamati senza un referrer preciso
    - privi di un token CSRF aggiornato ad ogni chiamata
    non ho capito cosa hai detto

    Originariamente inviato da fcaldera
    3) Predisponi lato server dei meccanismi in modo da limitare un numero eccessivo di chiamate in brevi intervalli di tempo (un po' come per la ricerca nel forum) e per rilevare un eccessivo carico del server (http://php.net/manual/en/function.sys-getloadavg.php)
    interessante, grazie. questo potrebbe essere un buon accorgimento almeno per i vari tentativi di bruteforcing degli account no?

    Originariamente inviato da fcaldera
    4) Nelle richieste effettuate via javascript potresti predisporre un meccanismo di timeout incrementale in modo da aumentare il tempo tra una chiamata ajax e la successiva qualora il server risponda lentamente (o se non risponde affatto). in questo caso considera di troncare del tutto le chiamate ajax se non sono fondamentali per il funzionamento dell'applicazione (ad es. per un autocompletamento automatico). Evita anche di mandare al server richieste simultanee alla stessa risorsa (scartale sul nascere)
    non ho query automatiche, sono sempre attivate da eventi tipo click su qualcosa.
    mi interesserebbe comunque sapere come studiare i tempi di risposta del server.
    al momento mi viene in mente una cosa tipo un timer che si attiva al "primo click", alla prima chiamata insomma, e poi inizia a chiamare ricorsivamente (setInterval(callback) insomma), per vedere se dopo X millisecondi il server ha risposto 200 o 400, altrimenti manda un messaggio di errore.
    come interrompere le chiamate ajax però, non ne ho idea

    Originariamente inviato da fcaldera
    5) Controlla sempre qualsiasi input arrivi allo script, sia get che post (ricorda che se fai uso di eventuali cookies questi viaggiano ad ogni richiesta http e appesantiscono di conseguenza la trasmissione dei dati). Io ad esempio prima di usare i dati controllo a priori che facciano match con determinate espressioni regolari.
    in che senso?
    non ho chiaro cosa intendi.

    Originariamente inviato da fcaldera
    Controlla inoltre che le chiavi di $_GET e $_POST abbiano esattamente le chiavi che ti aspetti, non una di più, non una di meno (ad es. in un form le chiavi sarebbero i 'name' dei vari input) diversamente qualcuno sta cercando di fare una richiesta non prevista/non consentita
    intendi che lato script devo fare una scansione dei vettori GET e POST prima di qualsiasi altra cosa e
    SE la variabile GET e/o POST NON è nel vettore che dico io, che so, ?
    Codice PHP:
    die("BRUTTO HACKER BASTARDO"
    grazie per gli input interessanti e cmq grazie anche a tutti gli altri, perchè in effetti avevo chiesto una cacchiata

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924

    Re: Re: Re: Nascondere o limitare accesso a codice jQuery

    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832

    Re: Re: Re: Re: Nascondere o limitare accesso a codice jQuery

    grazie per i link!

    ma per il resto?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.