0

我正在尝试加强 Joomla 1.5+ 站点上的管理员登录,尽管客户端可能很快会进行升级 - 它还没有发生。我使用以下代码编辑了管理员/index.php:

/* Block access to administrator
--------------------------------------------- */
$user =& JFactory::getUser();
$secretkey = 'mytoken';
$redirectto = 'location: http://www.myurl.com';
$usertype = 'Registered';

//Check if the user is not logged in or if is not a super user:
if ($user->guest) { //|| (!$user->guest && $user->usertype == $usertype) ) {
//Check if the secret key is present on the url:
if (@$_GET['access'] != $secretkey) { header($redirectto); }
}
/* --------------------------------------------- */

这是基于我在网上找到的某人的代码。目前,键入 www.myurl.com/administrator/ 或 www.myurl.com/administrator/index.php 会重定向到主页。www.myurl.com/administrator/index.php?access=mytoken 显示登录。登录尝试次数已减少,但 RSFirewall!组件仍然每天报告几个。

在我评论第一个 if 语句的第二半之前,代码总是重定向,无论如何..

他们如何仍然访问登录页面?还有什么我可以做得更好?

4

1 回答 1

0

为什么不使用提供此功能的众多可用插件之一,而不是破解核心?

在当前的Joomla 扩展目录( JED ) 中,“登录保护”中列出的许多产品都有 Joomla 1.5 版本,或者尝试存档 JED(对于 Joomla 1.5 扩展)失败,您可以尝试登录保护部分。

如果您的代码在onAfterInitialise事件发生之后,/administrator/index.php那么防火墙软件可能仍会记录访问。该onAfterInitialise事件是第一个可以“插件”到 Joomla 的扩展!环境。

为了避免任何扩展,您可能需要在此块之前的代码:

// trigger the onAfterInitialise events
JDEBUG ? $_PROFILER->mark('afterInitialise') : null;
$mainframe->triggerEvent('onAfterInitialise');

各种安全插件通常会将自己附加到此事件并首先以非常低甚至负的值对自己进行排序,这就是为什么它们在没有防火墙发现问题的情况下工作的原因。

于 2013-10-30T21:54:59.480 回答