SmartFAQ由SmartFactory开发(https://www.smartfactory.ca),是InBox Solutions(https://www.inboxsolutions.net)的部门。

如何禁用对引用信息检查?
如果你网站上有用户因为防火墙或某些其他阻止引用信息的软件而无法在论坛发布内容或添加其他信息,那么你可能需要在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($refXOOPS_URL) !== ) {
      return 
false;
   }
   return 
true;
}


本信息适用于XOOPS 2.0.7,也许也适用于更早和更晚的版本。(希望将来会增加一个系统配置选项,以无需黑客手段关闭此选项)。

感谢Mithrandir提供此信息,他在以下帖子的帖子中发现了这方面的信息

https://xoops.org.cn/modules/newbb/viewtopic.php?topic_id=25989


评论归作者所有。我们不对其内容负责。
user

 这个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($refXOOPS_URL) !== ) {
return 
false;
}
return 
true;
}


相比之下,上面的代码比FAQ中的代码更安全。请注意,所有网站管理员都必须打开“referer”,以保护您的网站。

最后但同样重要的是,所有感谢都归功于GIJOE,因为这个漏洞最初是由他提出的。

编辑
嗯...原始代码在引用信息为空时返回“FALSE”。另一方面,黑客代码返回“TRUE”。因此,它禁用了对于那些不发送引用的人来说的引用检查。

所以这个黑客是为了方便不知道引用是什么以及他们的防火墙做什么的用户而引入的。

 
user

 关于这个常见问题,这不是很危险吗?


谢谢,已更新

 
user

 关于这个常见问题,这不是很危险吗?


由于代码已更改,因此文本不完全合理,因为你不仅仅是添加 return true; 在同一点。能否有模块管理员修改文本以匹配新的代码?

一个很好的链接,解释了关于跨站请求伪造攻击(CSRF)的更多信息

http://shiflett.org/articles/foiling-cross-site-attacks

谢谢

--Julian

 
user

 关于这个常见问题,这不是很危险吗?


我已经编辑了这个常见问题来澄清代码变更。

我不理解Olorin的帖子。他发布的代码看起来与原始(未修改)代码相同。

请注意,即使HTTP_REFERER检查并不是万无一失,因为它并不难伪造,但它只是额外的安全层。

 
user

 关于这个常见问题,这不是很危险吗?


好的。让我澄清我想说的。
首先,我的代码可能至少可以保护启用了“引用”的网站管理员免受CSRF攻击。
然而,它不会保护禁用了“引用”的用户,因为检查总是被绕过。

现在让我们看看我的代码做了什么。当检查本身被禁用时,“first-if”返回true。当不发送“引用”时,“second-if”返回true。当检测到无效的(可能是恶意的)“引用”时,“third-if”返回false。

这导致禁用不发送引用的人的检查,这意味着每个新手用户都不需要担心他的/她的防火墙。同时,对于CSRF来说,只要网站管理员发送带有javascript关闭的“引用”,他们就会得到保护。

quote


请注意,即使HTTP_REFERER检查并不是万无一失,因为它并不难伪造,但它只是额外的安全层。
同意。引用保护层像表皮一样薄,但它在某种程度上确实有效。

因此,如果您是网站管理员,请开启您的引用,禁用javascript(因为它破坏了许多防护),并安装防护器(不是针对CSRF,而是针对完全的安全)。

并且不要点击奇怪的链接。

综上所述,我的代码可以为只通过返回true 0.1纳米...

 
user

 关于这个常见问题,这不是很危险吗?


新用户注册时遇到相同的问题,作为新手,我正在不同论坛上研究这个问题。我认为对于正在观看这些线程的其他新手来说,理解CSRF的含义非常重要。我发现这篇文章非常有用 http://shiflett.org/articles/foiling-cross-site-attacks
基本上,我认为整个问题都归结为管理员必须做的决定。
我想让我的网站对每个人都完全开放,冒着网站安全受损的风险吗?
或者
我想要求访客更改他们的PC设置才能使用我的网站,以保护我网站的安全?
这里的麻烦在于用户的便利性和信任问题——你真的想在网站的注册页面上发布安全警告,可能会吓跑潜在会员吗?

对可能的解决方案有何建议?

注册页面上有可能提供可下载的补丁,用户可以将其下载并安装到自己的机器上,以解决特定于其操作系统和防火墙软件的问题吗?
这似乎是一个既方便成员使用又能保持网站最佳安全性的解决方案。

 
user

 关于这个常见问题,这不是很危险吗?


我正在尝试按照这个漏洞修补程序操作,因为我遇到了一些用户也有相同的问题,但我在2.0.10版本中原有的代码相当不同

quote

function xoops_refcheck($docheck=1)
{
return $GLOBALS['xoopsSecurity']->checkReferer($docheck);
}


在这个上下文中,漏洞修补程序看起来像什么?

 
user

 关于这个常见问题,这不是很危险吗?


Xoops 2.0.10使用票据系统进行用户识别,因此我不确定这个FAQ是否适用 。Mith可能需要确认这一点。

 
user

 关于这个常见问题,这不是很危险吗?


目前大多数组件还没有实施票据系统,因此HTTP引用者检查仍然非常流行。

在2.0.10版本中,引用者检查被移动到/class/xoopssecurity.php中的checkReferer()方法。代码与之前版本中的函数相同。

 
user

 关于这个常见问题,这不是很危险吗?


2.2.3 中是怎样实现的?这个漏洞还是有效的吗?谢谢。

 
user

 关于这个常见问题,这不是很危险吗?


你好,

我在这里遇到了与 HTTP_REFERER 一样的问题。我已经尝试了这里发布过的所有方法。

问题部分解决了。第一次登录时我没有 HTTP_REFERER 错误,但当点击任何链接时,用户就会被注销,我需要再次登录才能继续,就像收到 HTTP_REFERER 错误时一样。

消息已经消失,但效果仍然存在。

有人能帮我吗?

谢谢

 
user

 关于这个常见问题,这不是很危险吗?


===在 2.2.3 中是如何实现的?漏洞是否依然有效?谢谢。=====

我认为你需要更改
function checkReferer($docheck=1)
{
$ref = xoops_getenv('HTTP_REFERER');
if ($docheck == 0) {
return true;
}
if ($ref == '') {
return false;
}
if (strpos($ref, XOOPS_URL) !== 0 ) {
return false;
}
return true;
}

改为

function checkReferer($docheck=1)
{
return true;
$ref = xoops_getenv('HTTP_REFERER');
if ($docheck == 0) {
return true;
}
if ($ref == '') {
return false;
}
if (strpos($ref, XOOPS_URL) !== 0 ) {
return false;
}
return true;
}

在文件 class/xoopssecurity.php 的第 164 行

 
user

 无法登录


如果我没有错,我已经检查了所有可能的相关问题来解决我的问题,但尝试过哪一个都不起作用。这是我网站发生的情况:

我无法登录(管理员)并且用户也无法登录。登录后,它会显示

"感谢你在 Macsite 登录"

但它会回到同一页面,但又需要进行登录才能访问我的网站。

有人能告诉我需要修改哪个文件或代码吗?谢谢。

 
user

 无法登录


提升

 
user

 解决方案 - 检查 .htaccess


我遇到了类似的问题,而且我的 .htaccess 文件被设置为将 mysite.com 修改为 http://www.mysite.com。这阻止我在新安装的网站上进入管理区域。

 


Login

Who's Online

291 user(s) are online (21 user(s) are browsing XOOPS FAQ)


Members: 0


Guests: 291


more...

Donat-O-Meter

Stats
Goal: $100.00
Due Date: Aug 31
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00
Make donations with PayPal!

Did you know ?

most shared servers are unsafe and enable malicious users to take advantage of world writable folders?

Random question

How can I prevent users copying material off my site?