这是WordPress的安全漏洞吗?

时间:2013-01-14 作者:akTed

<?php
if ( ! is_admin() ) return;
echo \'You should not see this if you\\\'re not logged in!\';
?>
如果你把这个放在mu-plugin, 并转到您的管理员,例如。,example.com/wp-admin/ 当您未登录时,您是否能够看到echo?

2 个回复
最合适的回答,由SO网友:EAMann 整理而成

你误解了is_admin() 作用它不是用于检查用户是否是管理员的标记,而是用于检查您是否在管理员页面上的模板标记。

Codex:

此条件标记检查是否显示仪表板或管理面板。这是一个布尔函数,意味着它返回TRUE或FALSE。

不过,你在这里面临着几个问题。

如果您试图转到/wp-admin 当您未登录时,WordPress将自动重定向页面。请求/wp-admin 确实是请求/wp-admin/index.php, 未登录的页面用户首先没有查看权限。所以你会被重定向到/wp-admin/wp-login.php 这不一定会加载你的插件代码echo/return 存在于全局范围中。实际上,这段代码应该包装在一个函数中,并连接到WordPress操作/wp-admin 登录时翻页,is_admin() 将评估为true 您应该能够看到echo 陈述很好,假设有两件事:

您的代码中没有错误(正如@amit和@Fraggy所指出的,您有一个输入错误-一个未被替换的错误\' 角色echo 和return 在全球范围内,因为实际上,没有办法控制echo/return 将会发生。您应该将此代码放在函数中

    重要提示

    如果您在WordPress中发现安全漏洞或与安全相关的bug,您应该report it to [email protected] 而不是像这样在公共论坛上发布。这种负责任的披露让团队有机会在恶意黑客阅读并利用之前解决并修补问题。

SO网友:amit

Theis_admin() 仅检查当前访问者是否在管理页面上

要阻止任何非管理员用户访问任何管理员页面,请使用current_user_can(); 作用下面是一个检查当前用户是否不是管理员的示例。

if ( ! current_user_can( \'manage_options\' ) ) {
    echo \'You should not see this if you\\\'re not logged in!\';
}

#1 Update -

is_user_logged_in() - 有一个功能可以检查当前访问用户是否已登录,您可以使用该功能。下面是一个更新的示例-

if ( ! is_user_logged_in() ) {
   echo \'You should not see this if you\\\'re not logged in\';
}

结束

相关推荐

Esc_html__security:在本例中用于什么?

如何esc_html__ (第二个)保护$message 被黑客攻击的变量?在这里使用这种保护有什么意义(第二种是纯文本保护)?<?php function unknown(){ /* If the user input any text, escape it. */ if ( !empty ( $_POST[\'unknown\'] ) ) $message = esc_html ( $_POST[\'unknow