在“如果它走路像鸭子,听起来像鸭子”的原则下,亚马逊的 SimpleDB 支持的 SQL 风格的查询似乎应该容易受到 SQL 注入类型的攻击。这是一个简单的示例,假设攻击者的输入进入变量 $category,并且他可以猜测列名:
$category = "Clothes' OR Category LIKE '%";
$results = $sdb->select("SELECT * FROM `{$domain}` WHERE Category = '$category'");
如果您正在玩家庭游戏,这些行可以就地替换html-sdb_create_domain_data.php
Amazon 的 PHP SDK (1.2) 中示例代码文件中的第 119 行。
亚马逊发布了引用规则,我想我可以写一些东西来确保用户输入中的任何“或”都加倍......但我一直明白,逃避基本上是一场军备竞赛,这使得参数化成为我选择的武器时例如,使用 MySQL。
其他人使用什么来保护 SimpleDB 查询?