加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 数据库 > MySql > 正文

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

发布时间:2020-05-22 23:43:00 所属栏目:MySql 来源:互联网
导读:我的公司希望将WordPress用于他们的Internet站点,我主要关注的是使用预准备语句.根据this,我自己难以置信地阅读了源代码,WordPress清理了字符串,但没有在数据库中准备好.有什么我能做的才能得到真实的东西吗?或者我的担忧没有根据?最佳答案历史理解0700类,

我的公司希望将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 PHP的mysql_escape_string()函数可以逃避这些文字 – 因此不了解数据库连接的实际编码(这种威胁只在PHP本身just a few months earlier中得到解决).

这仍然是WordPress(仅)对SQL注入for nearly two years的防御,于是switched使用(甚至更不安全)addslashes()用于逃离 – 然后保持到位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()这些天尝试交付的内容)应该能抵抗所有已知的攻击……

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读