我正在努力强化Joomla 1.5+网站上的管理员登录,虽然客户端可能很快就会升级 - 但它还没有发生。我使用以下代码编辑了administrator / 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语句的下半部分之前,代码总是重定向无所谓...
他们如何仍然访问登录页面?我能做得更好吗?
答案 0 :(得分:0)
为什么不使用提供此功能的众多插件之一,而不是黑客入侵?
在当前Joomla Extensions Directory(JED)上,“Login Protection”中列出的许多产品都有Joomla 1.5版本,或者没有尝试Archived JED(适用于Joomla 1.5)您可以尝试Login Protection部分。
如果您的代码位于onAfterInitialise
中的/administrator/index.php
事件之后,则防火墙软件可能仍会记录访问权限。 onAfterInitialise
事件是扩展程序可以“插入”Joomla的第一个地方!环境。
要避免任何扩展,您可能需要在此块之前使用您的代码:
// trigger the onAfterInitialise events
JDEBUG ? $_PROFILER->mark('afterInitialise') : null;
$mainframe->triggerEvent('onAfterInitialise');
各种安全插件通常会将自己附加到此事件中,并且首先使用非常低甚至负值来自行排序,这就是为什么它们在没有防火墙看到问题的情况下工作的原因。