WordPress安全:禁用shortlink功能并禁止(?p=文章ID)跳转

编辑于:2023年05月23日

WordPress安全:禁用shortlink功能并禁止(?p=文章ID)跳转

WordPress 的shortlink功能是一种内置的功能,用于在页面头部添加一个短链接(Shortlink),用于代替长链接(Permalink)。也就是通过在域名后面加?p=123就能访问对 ID 为 123 的文章。

这对通过遍历ID采集网站文章,提供了非常方便的条件,因此建议从页面头部移除 shortlink 链接,并禁止通过 ?p=123 获取文章。

1. 从页面头部移除 shortlink 链接

shortlink 链接通常的格式如:<link rel="shortlink" href="http://网站域名/?p=123" />,下面是从页面头部移除 WordPress shortlink 功能的几种方法:

1.1 使用 WordPress 提供的过滤器

WordPress 提供了一个名为 pre_get_shortlink 的过滤器,可以用于修改或移除 WordPress shortlink 功能。使用以下代码可以禁用 shortlink 功能:

function remove_shortlink() {
    return false;
}
add_filter('pre_get_shortlink', 'remove_shortlink');

将上述代码添加到主题的 functions.php 文件中,即可禁用 WordPress shortlink 功能。

1.2 使用 remove_action 函数

另一种禁 用shortlink 功能的方法是使用remove_action函数来删除头部中的shortlink标签。使用以下代码可以实现:

remove_action('wp_head', 'wp_shortlink_wp_head');

将上述代码添加到主题的 functions.php 文件中,即可移除 WordPress shortlink 标签。

2. 禁止通过 ?p=123 跳转到文章链接获取数据

通过上面的代码虽然能从页面移除相关的链接显示,但如果直接在域名后面加上?p=123 依然会跳转到对应的文章,因此还要进步的操作,虫子菌为大家提供三种处理方式,大家可以根据需要自己选择。

2.1 报错404并显示主题默认的404页面

add_filter('redirect_canonical', 'disable_shortlink_redirect', 10, 2);
function disable_shortlink_redirect($redirect_url, $requested_url) {
    if (preg_match('/\?p=[0-9]+$/', $requested_url)) {
        status_header(404);
        nocache_headers();
        include(get_query_template('404'));
        die;
    }
    return $redirect_url;
}

2.2 直接报错404

add_filter('redirect_canonical', 'disable_shortlink_redirect', 10, 2);
function disable_shortlink_redirect($redirect_url, $requested_url) {
    if (preg_match('/\?p=[0-9]+$/', $requested_url)) {
        status_header(404);
        nocache_headers();
        die;
    }
    return $redirect_url;
}

2.3 跳转到网站首页

add_filter('redirect_canonical', 'disable_shortlink_redirect', 10, 2);
function disable_shortlink_redirect($redirect_url, $requested_url) {
    if (preg_match('/\?p=[0-9]+$/', $requested_url)) {
        return home_url('/');
    }
    return $redirect_url;
}

相关推荐

暂无评论