如果你网站上有用户因为防火墙或某些其他阻止引用信息的软件而无法在论坛发布内容或添加其他信息,那么你可能需要在XOOPS代码中禁用引用检查。
有关引用信息问题更详细的信息,请查看这个问题
https://xoops.org.cn/modules/smartfaq/faq.php?faqid=9【有一个带有详细修复防火墙端问题的步骤的评论,但这要求所有有问题的用户都能够成功遵循这些步骤,但很可能他们中大多数人不会,因此需要在你的XOOPS网站中能够禁用检查。】
要禁用引用检查,请在include/functions.php文件中的xoops_refcheck()函数中添加一行,大约在第137行
function xoops_refcheck($docheck=1)
{
[color=ff0000]return true;#*#DISABLE_REFERER_CHECK#[/color]
$ref = xoops_getenv('HTTP_REFERER');
if ($docheck == 0) {
return true;
}
if ($ref == '') {
return false;
}
if (strpos($ref, XOOPS_URL) !== 0 ) {
return false;
}
return true;
}
本信息适用于XOOPS 2.0.7,也许也适用于更早和更晚的版本。(希望将来会增加一个系统配置选项,以无需黑客手段关闭此选项)。
感谢Mithrandir提供此信息,他在以下帖子的帖子中发现了这方面的信息
https://xoops.org.cn/modules/newbb/viewtopic.php?topic_id=25989
这个FAQ非常危险,不是吗?
好吧,我不是专业人士。但是,据我所知,禁用“referer-check”非常危险,因为关闭检查会使网站面临 CSRF 攻击的 更大 风险。
function xoops_refcheck($docheck=1)
{
$ref = xoops_getenv('HTTP_REFERER');
if ($docheck == 0) {
return true;
}
if ($ref == '') {
[d]return false;[/d]//the very original
[b][color=ff0000]return [u]true[/u];[/color][/b]//hacked code
}
if (strpos($ref, XOOPS_URL) !== 0 ) {
return false;
}
return true;
}
相比之下,上面的代码比FAQ中的代码更安全。请注意,所有网站管理员都必须打开“referer”,以保护您的网站。
最后但同样重要的是,所有感谢都归功于GIJOE,因为这个漏洞最初是由他提出的。
编辑
嗯...原始代码在引用信息为空时返回“FALSE”。另一方面,黑客代码返回“TRUE”。因此,它禁用了对于那些不发送引用的人来说的引用检查。
所以这个黑客是为了方便不知道引用是什么以及他们的防火墙做什么的用户而引入的。