版本 1.5.7 引入了许多安全改进。由于问题的性质,补丁直到发布前不久才引入到 SVN,因此它们只有几个小时的时间进行 JBS 测试。如果更早引入,将会给坏人提供关于漏洞的信息,而且引入与发布之间的时间差会给他们机会攻击许多网站。(这也是我们要求人们不要在论坛上发布漏洞,而是访问安全中心并将它们私下发送给 JSST 的原因。)

其中一个修复解决了重定向时的问题。创建了一个新的 JURI 方法--isInternal($url)--来解决这个问题。此修复对用户、内容、投票和 mailto 的控制器进行了更改,以便它们在重定向时使用新方法。   此修复依赖于一个仅在 php 5 中可用的函数,而不是 php 4。因此,如果您使用 PHP 4,可能会在内容提交、登录、mailto 和投票时遇到问题。

如果您有一个 PHP 4 网站我们建议您更新到 php 5。如果由于某些原因您无法这么做,请将此代码添加到 /libraries/joomla/utilities/compat/php50x.php 的末尾

if(!function_exists('stripos')) {
 function stripos($haystack, $needle, $offset = 0) {
  return strpos(strtolower($haystack), strtolower($needle), $offset);
 }
}

此修复将在 1.5.8 的正常发布中应用。

然而,如果你关心安全性,一个更好的解决方案是升级到PHP 5。我在多个主机上有网站,有些主机非常慢或者难以升级到PHP 5,但自从8月8日生命结束以来,他们都已经转变。通常,你只需提交一个帮助工单,主机提供商就会处理这个问题或者告诉你如何操作。由于PHP 4将不再有安全发布,如果你想保护你的网站,你必须切换到PHP 5;不要等待PHP 4中的漏洞被发现。正如我们在Joomla 1.5.6中修复的漏洞所看到的那样,即使威胁在几小时内得到修复,这也足以让脚本小子攻击数百个网站。在PHP 4的情况下,一个负责任的主机提供商不会应用非官方补丁。谁知道,这可能会让他们最终升级?但与此同时,你的网站将会受到威胁。所以今天就去提交那个支持工单。