如何保护Amazon SimpleDB免受SQL注入攻击?

10

按照“它走起来像鸭子,叫声也像鸭子”的原则,“亚马逊简单数据库”支持的类SQL查询似乎应该容易受到SQL注入攻击。这里有一个简单的例子,假设攻击者的输入进入了变量$category,并且他可以猜测列名:

$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行。

Amazon发布了引用规则,我想我可以编写一些代码来确保用户输入中的任何 " 或 ' 被重复输入...但我一直认为转义基本上是一场军备竞赛,这就是为什么在使用例如MySQL时,参数化成为我的选择武器。

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

1个回答

8
简单数据库(SimpleDB)的选择操作是非破坏性的,所以唯一需要防范的就是攻击者获取额外查询数据。解决方案很简单,只需使用SimpleDB对用户输入进行清理,因为SimpleDB不允许子查询和复合语句。所以这并不是一场竞赛;如果输入中有一个或多个引号字符序列且长度为奇数,则必须对其进行转义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接