我正在使用Joomla网站,其index.php文件已被修改以更改默认访问控制行为。记住这是Joomla 1.5,这一行:
$mainframe->authorize($Itemid);
已包含在查找远程IP的某些条件代码中,如果IP在白名单范围内,则不会调用authorize()
[*]。这是为了允许无需登录即可无缝访问某些资源。
虽然我是Joomla开发的新手,但我猜这不是最好的方式。首先,它可能意味着在未来Joomla升级的情况下重新修补index.php。拦截身份验证检查的最佳替代方法是什么?
[*]这是另一个谜团:IP管理通过名为“IP过滤器”的组件在前端进行。在components/com_ipfilter
处有一个完全空的目录,但在administrator/components/com_ipfilter
处有一个更有特色的目录。该组件将数据存储在名为kip_filters
的表中(为什么'k'?),并且组件清单文件中列出的authorUrl会转到看似垃圾邮件的制药页面。一切都很令人担忧......
答案 0 :(得分:2)
您正在寻找的是一个系统插件,不需要黑客攻击任何文件。您可以使用相当多的系统事件来触发插件并进行IP测试,然后确定是继续显示页面还是将访问者重定向到某种警告页面。
查看有关系统事件的文档 - http://docs.joomla.org/Plugin/Events/System
---更多细节---
查看API执行顺序,无论如何都会调用authorize()
(http://docs.joomla.org/API_Execution_Order)。由于默认行为是调用authorize()
,因此您将不得不欺骗它以返回正响应。
您的插件应该由onAfterInitialise
触发,您应该操纵JUser
。当您调用authorize()
时,函数需要一个用户ID,它来自JUser对象和getuser()
函数。您需要做的就是创建具有所需权限的用户,然后让插件设置用户ID,以便authorize()
返回true。
答案 1 :(得分:0)
对于安全问题,你可以使用这些步骤,我也会给你一个很好的ip过滤器组件:
首先,这是joomla最重要的组件: http://extensions.joomla.org/extensions/access-a-security/site-security/site-protection/16363 它为您提供了最重要的方法来避免任何黑客攻击或垃圾邮件或PHP错误,并为您的joomla网站提供非常快速的升级:)它还提供了一个IP黑名单管理器,这是一个完整的解决方案。
希望这篇文章能给人一个亮点! 问候, Raeed Rabie
答案 2 :(得分:0)
我建议将您的表格前缀从jos_
更改为随机的,例如hsfdaghadfg_
您还可以relocate your configuration file获得额外的安全保障。