Zebra_Database MySQL 包装器是不是可以防止 SQL 注入?

Posted

技术标签:

【中文标题】Zebra_Database MySQL 包装器是不是可以防止 SQL 注入?【英文标题】:Does the Zebra_Database MySQL wrapper protect against SQL injection?Zebra_Database MySQL 包装器是否可以防止 SQL 注入? 【发布时间】:2013-03-20 12:41:16 【问题描述】:

我正在考虑使用一个名为 Zebra_Database 的 mysql 包装器:

http://stefangabos.ro/php-libraries/zebra-database/

有人可以通过代码判断这是否可以防止 SQL 注入,还是我应该采取进一步措施来保护自己?

谢谢!!

【问题讨论】:

它鼓励使用准备好的语句,这些语句不易受到 sql 注入的影响。来自首页“它鼓励开发人员编写可维护的代码,并通过鼓励使用准备好的语句来提供更好的默认安全层,其中参数会自动转义。” 所以基本上这只是意味着用 mysqli_real_escape_string 包装每个输入? 不,这意味着您应该使用准备好的语句,这些语句一开始就不容易受到SQL注入的影响。 @benjamin-gruenbaum 谢谢。如果您将其添加为答案,我会将其标记为答案。 【参考方案1】:

它鼓励使用准备好的语句 - 与 mysqli 使用相同的受限版本 - 因此,它没有提供 100% 的保护。 它使用某种查询构建器 - 因此,它使您的 SQL 过于不灵活(并且 - 因此 - 再次不安全)。

我个人不会使用它,但首先它比“用 mysqli_real_escape_string 包装每个输入”要好。

【讨论】:

【参考方案2】:

它鼓励使用不易受 SQL 注入影响的预准备语句。

来自 Zebra_Database 的首页:

它鼓励开发人员编写可维护的代码,并通过鼓励使用准备好的语句来提供更好的默认安全层,其中参数会自动转义。

这意味着您应该使用准备好的语句,这些语句一开始就不容易受到 SQL 注入的影响。请参阅this question 了解预准备语句的用法。

【讨论】:

以上是关于Zebra_Database MySQL 包装器是不是可以防止 SQL 注入?的主要内容,如果未能解决你的问题,请参考以下文章

[新星计划] Python上下文管理器 | with关键字

[新星计划] Python上下文管理器 | with关键字

[新星计划] Python上下文管理器 | with关键字

WPF附加事件定义

Python开发第十四篇装饰器

Python C 包装器内存泄漏