2010-12-15 3 views
10

В соответствии с принципом «если он ходит как утка, и это звучит как утка», наверняка это похоже на запросы с поддержкой SQL, поддерживаемые SimpleDB Amazon, должны быть восприимчивы к атакам типа SQL-инъекций. Вот простой пример, который предполагает ввод атакующего будет в переменные $ категории, и что он может угадать имя столбца:Как защитить Amazon SimpleDB от SQL Injection?

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

Если вы играете в игру дома, эти линии могут быть в месте замена строки 119 в файле html-sdb_create_domain_data.php в примере кода в PHP SDK от Amazon (1.2).

Amazon публикует quoting rules, и я полагаю, что могу написать что-то, что гарантирует, что любой «или» в пользовательском вводе будет удвоен ... но я всегда понимал, что побег - это в основном гонка вооружений, которая делает параметризацию моим оружием выбор при использовании, например, MySQL.

Что другие люди, использующие для защиты SimpleDb запросов?

ответ

8

операции SimpleDB Select является неразрушающей, поэтому единственным, что для защиты от этой дополнительные данные запроса, выходящие на злоумышленник.

Решение для дезинфекции пользователя inp ut для запроса довольно просто с SimpleDB, поскольку подвыборки и составные утверждения недопустимы. Так что это не гонка вооружений; последовательности одного или нескольких символов котировки на входе должны быть экранированы, если длина последовательности нечетна.

Смежные вопросы