最好避免使用$wpdb来解决安全问题吗?

时间:2019-01-17 作者:Brad Ahrens

我正在将WordPress Multisite与多语言Press结合使用。

为了使用适当的语言将导航栏之外的href获取到页面,我使用了一个SQL查询,在短代码中查询$wpdb。

global $wpdb;
$blogid = get_current_blog_id();
$result = $wpdb->get_results("SELECT * FROM `wp_multilingual_linked` WHERE `ml_source_elementid` = \'360\' and `ml_blogid` = $blogid");
foreach($result as $row) {
    $your_page_link = get_the_permalink($row->ml_elementid);
}
在短代码中查询$wpdb是否存在任何固有的安全缺陷?

谢谢

1 个回复
最合适的回答,由SO网友:J.D. 整理而成

否,中没有固有的安全缺陷$wpdb, 或者在短代码中使用它。但是,如果不小心使用,可能会引入漏洞。您主要应该考虑两个问题。

第一个是逃跑。您需要确保在查询中使用任何可能由用户控制的值时,这些值都会被转义。做到这一点的最好方法是准备好的声明和$wpdb->prepare(). 在您的代码中,这不是必需的,因为get_current_blog_id() 应该是安全的。然而,这是一个好习惯:

$result = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM `wp_multilingual_linked` WHERE `ml_source_elementid` = \'360\' and `ml_blogid` = %d", $blogid ) );
有时需要考虑的另一件事是,您的查询是否可能向用户公开不应该公开的信息。例如,您不想让其他用户公开私人帖子。在您的情况下,我认为这不是一个问题,因为您没有查询可能受到限制的数据。但要记住这一点是一件好事,这样在必要的情况下,您就可以进行适当的功能检查,而不是无意中将特权信息暴露给非特权用户。

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果