我使用PHP并使用名为Idiorm的ORM进行SQL调用。
请求可能如下所示:
$person = ORM::for_table('person')->create();
$person->name = $_POST['name'];
$person->age = $_POST['age'];
$person->save();
它工作得很好但是对SQL注入可能不安全吗?解决这个问题的正确/最佳方法是什么?实施例
答案 0 :(得分:7)
来自readme:
功能
- 建立在PDO之上。
- 使用准备好的语句来防止SQL注入攻击。
但是,对于表名it says
请注意,此方法* 不会转义其查询参数等 表名不应直接从用户输入传递。*
同样适用于限制,排序和分组,因此对于那些你需要考虑替代方法的人(例如,只允许ascii-7字符传递)。如果您需要这样做,限制只是整数,因此您可以进行ctype_digit检查。对于订购和分组,您可以检查字母数字,假设您的列名中没有其他内容。这可以通过ctype_alnum完成。
但是你在那里的查询应该没问题,因为它没有那些。
当然,你不应该只相信它 - 测试它。
答案 1 :(得分:3)