在Drupal中禁用/节点视图和其他隐藏视图?

时间:2009-10-03 23:18:34

标签: drupal drupal-6

在我的网站上度过了许多漫长的夜晚,现在我开始进行各种安全检查,并偶然发现以下情况:

www.mysite.com/node

显示用户有权访问的最新x节点。我不希望这个视图对用户可见。我当然不希望任何其他类似的观点可用。所以,我的问题是:

  1. 如何禁用此视图?
  2. 是否有其他隐藏的视图我不知道匿名用户可以一次访问多个节点?

5 个答案:

答案 0 :(得分:5)

您希望在自定义模块中使用hook_menu_alter()重新路由当有人尝试在/node加载页面时发生的情况。有两种方法。

首先,您可以明确拒绝访问:

function custom_module_menu_alter(&$items) {
  $items['node']['access callback'] = FALSE;
}

其次,您可以将页面重新路由到您选择的一个:

function custom_module_menu_alter(&$items) {
  $items['node']['page callback'] = 'custom_module_new_page_content';
}
function custom_module_new_page_content() {
  return 'Go away!';
}

其他列表

如果您担心用户有权访问的商家信息,搜索结果和跟踪器是我可以回忆的其他地方。

This comment提供了使用自定义模块从搜索结果中取消设置的逻辑。

不幸的是,如果没有直接攻击,Tracker就不是特别可定制的。您最好的选择是在contrib中使用其中一个跟踪器替换,或者更简单地修改随Views模块打包的Tracker替换。

编辑:澄清 - 你也可以从可选的“核心”模块中禁用Tracker模块。但是,它是一个非常有用的功能,因此您可能希望以某种形式保留它。

答案 1 :(得分:3)

至于您找到的禁用路径,我第二次提出使用hook_menu_alter调整访问回调的Graysides建议。

对于其他“隐藏”视图,这很大程度上取决于您使用的模块,因为许多模块添加了一些默认的“视图”(在概述页面的意义上,不一定是视图模块视图)。因此,我建议查看Drupal数据库的menu_router,而不是试图在此间接找到它们。在那里,您将找到您的实例当前使用的所有路径(内部路径,而不是别名,但所有别名都映射到内部路径)。

答案 2 :(得分:2)

执行此操作的一种相对简单的方法是打开核心下的Path module,将/node别名设置为/node/1等其他内容。

不确定其他网址会给你带来你不想看到的东西......我认为这种技术对你遇到的任何人都有效

答案 3 :(得分:1)

function modulename_menu_alter(&$items) {
    $items['node']['page callback'] = 'drupal_not_found';
}

来源:http://drupal.org/node/500296#comment-3532630

答案 4 :(得分:-1)

“节点”视图是默认的首页视图。所以它通常与你首页上显示的相同。