10

在“如果它走路像鸭子,听起来像鸭子”的原则下,亚马逊的 SimpleDB 支持的 SQL 风格的查询似乎应该容易受到 SQL 注入类型的攻击。这是一个简单的示例,假设攻击者的输入进入变量 $category,并且他可以猜测列名:

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

如果您正在玩家庭游戏,这些行可以就地替换html-sdb_create_domain_data.phpAmazon 的 PHP SDK (1.2) 中示例代码文件中的第 119 行。

亚马逊发布了引用规则,我想我可以写一些东西来确保用户输入中的任何“或”都加倍......但我一直明白,逃避基本上是一场军备竞赛,这使得参数化成为我选择的武器时例如,使用 MySQL。

其他人使用什么来保护 SimpleDB 查询?

4

1 回答 1

8

SimpleDB Select 操作是非破坏性的,因此唯一需要防范的是额外的查询数据会发送给攻击者。

使用 SimpleDB 清理用户对查询的输入的解决方案非常简单,因为不允许使用子选择和复合语句。所以这不是真正的军备竞赛。如果序列的长度为奇数,则必须对输入中包含一个或多个引号字符的序列进行转义。

于 2010-12-15T14:46:12.903 回答