Joomla访问控制和修改的index.php

Joomla访问控制和修改的index.php,joomla,joomla1.5,access-control,Joomla,Joomla1.5,Access Control,我正在使用一个Joomla站点,它的index.php文件已被修改,以改变默认的访问控制行为。记住这是Joomla 1.5,这条线: $mainframe->authorize($Itemid); 已包装在某些条件代码中,该代码查找远程IP,如果IP在白名单范围[*]内,则不会调用authorize()。这是为了在不登录的情况下无缝访问某些资源 虽然我是Joomla开发的新手,但我猜这不是最好的方法。首先,这可能意味着在将来Joomla升级时重新修补index.php。拦截身份验证检查的

我正在使用一个Joomla站点,它的index.php文件已被修改,以改变默认的访问控制行为。记住这是Joomla 1.5,这条线:

$mainframe->authorize($Itemid);
已包装在某些条件代码中,该代码查找远程IP,如果IP在白名单范围[*]内,则不会调用
authorize()
。这是为了在不登录的情况下无缝访问某些资源

虽然我是Joomla开发的新手,但我猜这不是最好的方法。首先,这可能意味着在将来Joomla升级时重新修补index.php。拦截身份验证检查的最佳替代方法是什么


[*]这是另一个谜:IP管理通过一个名为“IP过滤器”的组件在前端进行。在
components/com\u ipfilter
中有一个完全空的目录,但在
administrator/components/com\u ipfilter
中有一个更具特色的目录。该组件将数据存储在名为
kip_filters
(为什么是“k”)的表中,并且该组件清单文件中列出的authorUrl将转到一个看起来像制药公司的垃圾邮件页面。所有这些都非常令人担忧……

对于安全问题,您可以使用以下步骤,我也将为您提供一个良好的ip筛选器组件:

首先,这是joomla最重要的组成部分: 它为您提供了避免任何黑客、垃圾邮件或php漏洞的最重要方法,还为您的joomla站点提供了非常快速的升级:)它还提供了一个IP黑名单管理器,这是解决您问题的完整解决方案

希望这篇文章能给别人一点启发! 当做
Raeed Rabie

我建议将您的表前缀从
jos
更改为随机值,如
hsfdaghadfg


你也可以为额外的安全

你要找的是一个不需要破解任何文件的系统插件。有很多系统事件可以用来触发插件并进行IP测试,然后确定是继续显示页面还是将访问者重定向到某种警告页面

查看有关系统事件的文档-

---更多细节---

查看API执行顺序,对
authorize()
的调用无论如何都会发生(http://docs.joomla.org/API_Execution_Order). 由于默认行为是调用
authorize()
,因此必须欺骗它以返回肯定响应


你的插件应该在初始化后由
on触发
,你应该操作
JUser
。调用
authorize()
时,函数需要从JUser对象和
getuser()
函数获取用户id。您只需创建一个具有所需权限的用户,然后让插件设置用户ID,以便
authorize()
返回true。

谢谢。我真的不认为有任何“安全”问题,只是一个过时的组件,可能没有很好地放在一起放在首位。我真正想要的是一个用于拦截访问控制并修改其行为的“钩子”。您知道joomla中提供默认访问控制的是什么吗?对不起,这不是真正的安全问题。当我在标题中说“hacked”时,我使用它的意思是“以一种稍微特别的方式改变”,而不是“cracked”的外行意思。我的错;标题更新了,谢谢。目前,这些是index.php中的相关位:
$mainframe->triggerEvent('onAfterInitialise')$大型机->路由()。。。如果(ip地址不在白名单中){$mainframe->authorize($Itemid);}…
那么我猜您建议的系统插件会对初始化后的
事件做出反应。考虑到对
$mainframe->route()
的调用,这种操作顺序有意义吗?您可能可以获取大部分代码并将其粘贴到插件中。这里有一个关于编写插件的教程-当然,但是其中的一些内容-例如,
大型机->路由()
-在joomla发行版的index.php文件中。我希望保持该文件的原样,删除所有被黑客攻击的更改,并确保自定义代码位于完全独立的位置,如您所建议的插件中。我只需要确保事件是此功能的适当挂钩。我想最简单的方法就是试试看;如果仍然不清楚,请告诉我,我将编辑原始问题。好的,再次阅读代码,看起来我可以将其挂接到
onAfterRoute
事件中并维护现有逻辑。我将用一个系统插件来试一试,然后返回并接受你的答案:)是的,这比我想/希望的要复杂一些。虽然我可以将大部分功能抽象到插件中,但是在default index.php中仍然存在调用
$mainframe->authorize()
的棘手问题。这是一条需要破解的线路,比以前好多了,但仍然不理想。在我看来,唯一的选择(因为authorize()行为在核心代码中根深蒂固)是将JSite子类化,但这已经开始变得有点硬了。。。