MySQL - ORM Idiorm - 防止SQL注入

Jen*_*ell 0 php mysql orm sql-injection idiorm

我使用PHP并使用名为Idiorm的ORM进行SQL调用.

请求可能如下所示:

$person = ORM::for_table('person')->create();
$person->name = $_POST['name'];
$person->age = $_POST['age'];
$person->save();
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但它可能不安全反对SQL注入?解决这个问题的正确/最佳方法是什么?例?

eis*_*eis 7

从他们的自述文件:

特征

  • 建立在PDO之上.
  • 始终使用预准备语句来防止SQL注入攻击.

但是,对于表名称,它说

请注意,此方法*不会转义其查询参数,因此不应直接从用户输入传递表名.*

限制,排序和分组也是如此,因此对于那些你需要考虑替代方法的人(例如,只允许ascii-7字符传递).如果你需要这样做,限制只是整数,所以你可以做ctype_digit检查.对于订购和分组,您可以检查字母数字,假设您的列名中没有其他内容.这可以用ctype_alnum完成.

但你在那里的查询应该没问题,因为它没有那些.

当然,你不应该只相信它 - 测试它.