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

Jer*_*ams 10 sql-injection amazon-simpledb

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

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

如果您正在玩主游戏,这些行可以是html-sdb_create_domain_data.php亚马逊PHP SDK(1.2)示例代码中文件第119行的原位替换.

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

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

Moc*_*cky 8

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

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