MySQL - ORM Idiorm - 防止SQL注入

时间:2012-12-07 06:55:50

标签: 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();

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

2 个答案:

答案 0 :(得分:7)

来自readme

  

功能

     
      
  • 建立在PDO之上。
  •   
  • 使用准备好的语句来防止SQL注入攻击。
  •   

但是,对于表名it says

  

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

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

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

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

答案 1 :(得分:3)

我浏览了来源here

line 1284(save()方法的一部分)上似乎正在准备语句。

所以在我看来,假设它已经在处理sql注入,看起来很安全。