Protezione contro le query sintetiche

5

Nota: Uno, non sono sicuro che le query sintetiche siano la parola giusta per il rischio di cui sto parlando. In secondo luogo, anche se sto considerando un modello a 3 livelli di applicazioni web, le risposte generali sono benvenute in situazioni client-server in cui la convalida lato server non è possibile.

Attualmente ho una pagina in cui esegui determinati calcoli usando quello che viene chiamato come DHTML. Questo calcolo genera una stringa che non ha pattern particolari in quanto tale. Questa stringa viene inviata a uno script lato server utilizzando AJAX.

Chiunque abbia una formazione di base in queste tecnologie può leggere il codice e rendersi conto che la query viene inviata è qualcosa del genere:

 http://domain.com/script.php?var=theStringSoGenerated

Nella speranza di sfruttare un possibile difetto, un hacker digita nel suo browser:

 http://domain.com/script.php?var=aCompletelyRandomString

Lo fa alcune volte e non vede alcun beneficio evidente e si chiude, ma nel livello intermedio, lo script PHP, completamente indifeso senza una possibile validazione, aggiorna e inserisce la stringa casuale nel database, influenzando la sua integrità e portando allo spreco di risorse.

Domanda: come posso proteggere la mia applicazione contro tali attacchi?

    
posta check123 06.05.2011 - 19:22
fonte

2 risposte

3

Devi convalidare l'input sul server.

Presumibilmente, se non tutte le stringhe sono OK, il client sta facendo qualcosa per convalidare che la stringa che genera è OK, o sta usando qualche processo per generare la stringa. Ora esegui gli stessi controlli sul lato server o chiedi al server di ricostruire quel processo per verificare che sia stato seguito. Se il client può farlo, anche il server può farlo.

Il nucleo qui è: non fidarti del cliente. Tutti i controlli su cui si fa affidamento devono essere eseguiti sul server (è corretto se sono eseguiti sia sul client che sul server, ma non è corretto effettuare controlli solo sul client e ometterli sul server).

Se desideri consigli più specifici, devi dirci di più su come il client genera la stringa e quali stringhe sono / non sono valide.

    
risposta data 09.05.2011 - 10:04
fonte
3

Sembra che in realtà non stai chiedendo attacchi di terze parti come CSRF o XSS, ma in realtà preoccupati che l'utente autorizzato possa riscrivere il codice JavaScript o inviare una query a mano.

Non c'è protezione contro questo, a meno che tu non voglia provare misure straordinarie per bloccare l'utente dal proprio computer e browser . Vedi per es. AJAX è fondamentalmente insicuro?

    
risposta data 07.05.2011 - 15:20
fonte

Leggi altre domande sui tag