2010-12-15 8 views
10

AmazonのSimpleDBがサポートしているSQL風味のあるクエリは、「ダックのように歩き、アヒルのように聞こえる」という原則の下で、SQLインジェクション型攻撃の影響を受けやすいはずです。ここでは、攻撃者の入力は変数$カテゴリに入る、と彼はカラム名を推測できるとされていると仮定し、簡単な例です:Amazon SimpleDBをSQLインジェクションから保護するにはどうしたらいいですか?

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

あなたがホームゲームをプレイしている場合は、これらの線がその場で可能AmazonのPHP SDK(1.2)のサンプルコードのhtml-sdb_create_domain_data.phpファイルの119行目の置き換え。

アマゾンは、「または」の入力が倍増することを保証する何かを書くことができると思いますが、エスケープすることは基本的に武器競争であり、パラメータ化を私の武器にしているといつも理解しています使用している場合、選択した、例えば、MySQLが。

のSimpleDBクエリーを守るために使用して他の人は何ですか?

答えて

8

SimpleDBの選択操作が非破壊であるので、保護するための唯一のことは、余分なクエリデータがに外出されます攻撃者。

ユーザーインピクチャをサニタイズするソリューションsub-selectと複合文は許可されていないため、クエリへのutはSimpleDBではかなり簡単です。それは本当に武器競争ではありません。シーケンスの長さが奇数の場合は、入力内の1つ以上の引用符のシーケンスをエスケープする必要があります。

関連する問題