我正在使用FluentPDO来处理我的数据库查询。在查看它的代码时,它似乎没有使用任何形式的转义。我知道PDO本身解决了很多安全问题,但它也不能幸免。
据我所知,只要我们使用它主页上的预准备语句语法,它就不会受到SQL注入的影响:
$query = $fpdo->from('article')
->where('published_at > ?', $date) // HERE!!
->orderBy('published_at DESC')
->limit(5);
如何转义变量以防止二阶SQL注入?简单地使用addslashes()就足够了吗?它是多余的吗?我应该如何处理这个库的安全性?
谢谢!
2条答案
按热度按时间iyr7buue1#
FluentPDO通过PDO的“execute”方法传递所有参数,例如:
这就是为什么FluentPDO已经准备好了查询以避免SQL注入。
iklwldmw2#
关于消毒,read more。
一些不错的报价:
不要试图通过清理输入数据来防止SQL注入。
相反,不要允许在创建SQL代码时使用数据。请使用使用绑定变量的预准备语句(即在模板查询中使用参数)。这是保证不会发生SQL注入的唯一方法。
或(阅读更多关于validating filters的信息)
PHP现在有了新的漂亮的filter_input函数,例如,现在有了一个内置的FILTER_VALIDATE_EMAIL类型,就可以把你从寻找“终极电子邮件正则表达式”中解放出来