php – 我可以做些什么来在WordPress中获取实际准备好的语句

前端之家收集整理的这篇文章主要介绍了php – 我可以做些什么来在WordPress中获取实际准备好的语句前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我的公司希望将wordpress用于他们的Internet站点,我主要关注的是使用预准备语句.根据this,我自己难以置信地阅读了源代码,wordpress清理了字符串,但没有在数据库中准备好.

有什么我能做的才能得到真实的东西吗?或者我的担忧没有根据?

最佳答案
历史

理解0700类,最初是wpdb0的a fork,是在way back in 2003之后推出的,只有a couple of months版本在MysqL准备好的语句协议发布之后,并且超过a year before PHP有任何API支持来访问它:wordpress因此做了唯一的事情,然后需要任何要直接连接到动态sql的变量.

那时候,ezsql(以及wordpress)used PHPmysql_escape_string()函数可以逃避这些文字 – 因此不了解数据库连接的实际编码(这种威胁只在PHP本身just a few months earlier中得到解决).

这仍然是wordpress(仅)对sql注入for nearly two years的防御,于是switched使用(甚至更不安全)@L_404_11@用于逃离 – 然后保持到位for over four years直到mysql_real_escape_string()终于utilised(尽管wpdb::prepare()the interim introduced)!

然后它不是another five years,直到wordpress甚至开始using一个能够进行本地语句准备的驱动程序(即MySQLi):现在就在两年前,并且,正如@naththedeveloper already pointed out,ticket #21663中的讨论表明使用本机预处理语句可能不会甚至在待办事项清单上.

现状

不幸的是,由于MysqLi对象是没有getter的wpdb类的a protected member(并且在内部分配了during instantiation),所以你无法使用wordpress数据库连接使用本机预处理语句(至少,没有修改/替换wpdb)你自己的班级).

Is there anything I can do to get the real thing?

当然,您可以打开自己的/单独的数据库连接,您可以根据自己的需要完全灵活地进行连接.

Or are my concerns unfounded?

与原生语句准备一样伟大(并且我同意它确实应该是任何新项目中针对sql注入的默认防御策略),它也有its downsides.小心地转义一个变量用作sql文字(由PDO做的)例如,准备好的语句模拟;以及wpdb :: prepare()这些天尝试交付的内容)应该能抵抗所有已知的攻击……

原文链接:https://www.f2er.com/mysql/433288.html

猜你在找的MySQL相关文章