2010-12-15 14 views
10

Nach dem Prinzip "wenn es wie eine Ente geht und es wie eine Ente klingt", scheint es, als würden die SQL-artigen Abfragen, die Amazon SimpleDB unterstützt, anfällig für SQL-Injection-Angriffe sein. Hier ist ein einfaches Beispiel, das des Angreifers Eingabe annimmt, wird in die Variable $ Kategorie gehen, und dass er einen Spaltennamen erraten kann:Wie kann ich Amazon SimpleDB vor SQL Injection schützen?

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

Wenn Sie das Heimspiel spielen, können diese Linien ein direktes Ersatz für Zeile 119 in der Datei html-sdb_create_domain_data.php im Beispielcode in Amazon PHP SDK (1.2).

Amazon veröffentlicht quoting rules, und ich könnte etwas schreiben, das sicherstellt, dass irgendwelche "oder" in Benutzereingaben verdoppelt werden ... aber ich habe immer verstanden, dass die Flucht im Grunde ein Wettrüsten ist, was die Parametrisierung zu meiner Waffe macht die Wahl bei der Verwendung von zum Beispiel MySQL.

Was sind mit anderen Menschen SimpleDB Abfragen zu verteidigen?

Antwort

8

die SimpleDB Select Operation nicht destruktiv ist, so das einzige, was gegen zusätzliche Abfrage Gehen Daten zu schützen, ist, der Angreifer

Die Lösung zur Bereinigung von Benutzerinp Die Abfrage ist mit SimpleDB ziemlich einfach, da Unterauswahlen und zusammengesetzte Anweisungen nicht erlaubt sind. Es ist also nicht wirklich ein Wettrüsten; Sequenzen von einem oder mehreren Anführungszeichen in der Eingabe müssen mit Escapezeichen versehen werden, wenn die Länge der Sequenz ungerade ist.

Verwandte Themen