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