在我的网站上度过了许多漫长的夜晚,现在我开始进行各种安全检查,并偶然发现以下情况:
www.mysite.com/node
显示用户有权访问的最新x节点。我不希望这个视图对用户可见。我当然不希望任何其他类似的观点可用。所以,我的问题是:
答案 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';
}
答案 4 :(得分:-1)
“节点”视图是默认的首页视图。所以它通常与你首页上显示的相同。