Come fare Ajax in modo sicuro?

15

Questa domanda è ispirata a questa domanda di sicurezza link

  1. Quali sono le minacce nell'utilizzo di Ajax? (Si prega di notare che sto parlando di minacce alla sicurezza, non di aspetti negativi)
  2. Come faccio Ajax in modo sicuro? (Si prega di fornire esempi, preferibilmente esempi in PHP poiché sto usando il CakePHP framework.)
posta Kim Stacks 10.02.2011 - 20:06
fonte

2 risposte

16

Ajax sta solo trasferendo i dati su HTTP - non è magico - quindi lo proteggi esattamente nello stesso modo in cui lo fai con le tue normali pagine web -

  • controlla l'autenticazione e l'autorizzazione
  • Cifra o aggiungi controlli di hash salati ai dati esportati nel browser per la reinoltro
  • tratta tutti i dati ricevuti nella richiesta come potenzialmente pericolosi
  • usa HTTPS dove è appropriato
  • trasforma i dati lasciando il tuo PHP usando il metodo giusto per il suo utilizzo (htmlentities, mysql_real_escape_string
  • trasforma i dati immettendo il tuo script usando il metodo giusto in base alla sua origine (ad es. json_decode)
risposta data 11.02.2011 - 14:39
fonte
6

Le minacce con AJAX sono le stesse che devono affrontare le normali richieste Web: XSS, SQL Injection, ecc. Una cosa da notare è che con AJAX, se carichi dati da una fonte non sicura (ad esempio alcuni servizi web), tu dovrebbe anche convalidare quei dati sul client, non solo sul server, oppure qualcuno potrebbe potenzialmente iniettare javascript e altre cose brutte.

Utilizza gli stessi metodi per proteggere la richiesta come faresti normalmente, dal momento che AJAX è solo una richiesta HTTP. Ma tieni presente che oltre a cercare le cose "normali" (controlla i privilegi degli utenti, sanifica i dati, ecc.), Controlla anche se ha fatto davvero la richiesta o se è stato ingannato (per esempio un link su un'altra pagina). Per fare ciò, includere un token CSRF in ogni richiesta AJAX e convalidarlo sul lato server (vedere Qual è il modo corretto per implementare token di modulo anti-CSRF? ). Sebbene sia consigliabile utilizzare un token CSRF anche nelle normali richieste.

Un'altra cosa è che a seconda di ciò che fai con il lato client, anche i dati vengono disinfettati. Altrimenti un utente malintenzionato potrebbe inserire del codice dannoso nella pagina. Questo è particolarmente importante se ottieni dati da una terza parte, ma è meglio farlo per tutti gli input.

    
risposta data 18.02.2011 - 11:44
fonte

Leggi altre domande sui tag