2010-12-15 9 views
10

Sous le principe «si ça marche comme un canard et ça sonne comme un canard», il semble bien que les requêtes à saveur SQL prises en charge par SimpleDB d'Amazon devraient être sensibles aux attaques par injection SQL. Voici un exemple simple qui suppose l'entrée de l'attaquant va dans la variable catégorie $, et qu'il peut deviner un nom de colonne:Comment puis-je protéger Amazon SimpleDB de SQL Injection?

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

Si vous jouez le jeu de la maison, ces lignes peuvent être un en place remplacement de la ligne 119 dans le fichier html-sdb_create_domain_data.php dans l'exemple de code dans le SDK PHP d'Amazon (1.2). Amazon publie quoting rules, et je suppose que je pourrais écrire quelque chose qui assure que tout ou partie de l'entrée de l'utilisateur est doublé ... mais j'ai toujours compris que s'échapper est fondamentalement une course aux armements, ce qui rend mon paramétrage de l'arme de choix lors de l'utilisation, par exemple, MySQL.

Quelles sont les autres personnes qui utilisent pour défendre les requêtes SimpleDB?

Répondre

8

l'opération SimpleDB Select est non destructif, la seule chose à protéger contre le données de requête supplémentaires allant vers l'attaquant

La solution pour assainir l'utilisateur inp ut à la requête est assez facile avec SimpleDB puisque les sous-sélections et les instructions composées ne sont pas autorisées. Donc ce n'est pas vraiment une course aux armements; les séquences d'un ou plusieurs caractères de citation dans l'entrée doivent être échappées si la longueur de la séquence est impaire.

Questions connexes