2010-12-15 15 views
10

Secondo il principio "se cammina come un'anatra e suona come un'anatra", sembra sicuro che le query basate su SQL che SimpleDB di Amazon supporta siano suscettibili agli attacchi di tipo SQL injection. Ecco un semplice esempio che assume ingresso dell'attaccante sta andando nella $ categoria variabile e che può indovinare un nome di colonna:Come posso proteggere Amazon SimpleDB da SQL Injection?

$category = "Clothes' OR Category LIKE '%"; 
$results = $sdb->select("SELECT * FROM `{$domain}` WHERE Category = '$category'"); 

Se si sta giocando la partita in casa, queste linee possono essere un posto in sostituzione della riga 119 nel file html-sdb_create_domain_data.php nel codice di esempio in PHP SDK di Amazon (1.2).

Amazon pubblica quoting rules e suppongo di poter scrivere qualcosa che assicuri che ogni "o" input dell'utente venga raddoppiato ... ma ho sempre capito che la fuga è fondamentalmente una corsa agli armamenti, il che rende la parametrizzazione la mia arma di scelta quando si utilizza, ad esempio, MySQL.

Quali sono le altre persone che utilizzano per difendere le query SimpleDB?

risposta

8

l'operazione SimpleDB Select è non distruttivo, quindi l'unica cosa per la protezione contro è dati aggiuntivi di query di andare a l'aggressore

La soluzione per disinfettare l'utente inp ut alla query è abbastanza semplice con SimpleDB poiché i sottoselezionamenti e le dichiarazioni composte non sono consentiti. Quindi non è davvero una corsa agli armamenti; le sequenze di uno o più caratteri di citazione nell'input devono essere sfuggiti se la lunghezza della sequenza è dispari.

Problemi correlati