Code前端首页关于Code前端联系我们

禁用 WordPress 自定义搜索功能,减少恶意关键词搜索对博客的攻击

terry 2年前 (2023-09-28) 阅读数 84 #Web安全

1。 WordPress博客通过搜索恶意关键词来攻击

如下图:

不法分子利用先生地下室博客的搜索功能来查找一些关键词违规行为。

禁止wordpress自带搜索功能,减少博客被恶意关键词搜索攻击

博主发现这个问题后,立即解决了。具体请参见《利用百度URL安全中心和Robots.txt减少WordPress搜索框的恶意攻击》一文。虽然可以在一定程度上减少恶意攻击的影响,但并不能完全阻止攻击。

防止攻击的唯一解决方案是禁用wordppress搜索功能。我犹豫了很久要不要关闭网页搜索功能,尝试使用百度网页搜索。不幸的是,由于百度站内搜索不支持https,所以计划失败了。

虽然有一些解决方案增加了限制搜索特定关键字的功能,以尽可能限制恶意关键字的搜索(方法稍后介绍),但恶意关键字太多,明显被禁止关键词不断添加。不可能的,这不仅增加了网站的负载,也增加了博主的负载。

经过分析,我的博客目前没有太多用户搜索,我也基本不使用搜索功能,所以我决定暂时关闭先生地下室博客的搜索功能。当然,为了首页的美观我可以搜索字段也会保留下来!

2。如何禁用WordPress自定义搜索功能

这可以通过将适当的功能代码添加到主题的functions.php文件中来实现。具体代码如下。代码来自Robin的博客

//禁用WordPress前台搜索功能
function disable_search( $query, $error = true ) {
if (is_search() && !is_admin()) {
$query->is_search = false;
$query->query_vars['s'] = false;
$query->query['s'] = false;
if ( $error == true )
// 执行搜索后显示的错误页面
// $query->is_home = true; //跳转到首页
$query->is_404 = true;//跳转到404页
}
}
add_action( 'parse_query', 'disable_search' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );

您可以选择执行搜索后显示的错误页面。 跳转到网站的404或主页。

原代码来自网络,不支持PHP7.2。它已被修改以支持更高版本的 PHP。

3。如何阻止 WordPress 中的恶意关键字搜索

作为附加信息,以下是如何阻止 WordPress 中的恶意关键字搜索。然而,这仍然是同样的问题。这不是一个完整的解决方案

a. 在当前主题目录下的 /wp-content/themes/theme-name/functions.php 文件中添加以下代码

//屏蔽恶意关键词搜索
add_action('admin_init', 'php_search_ban_key');
function php_search_ban_key() {
add_settings_field('php_search_key', '搜索关键词屏蔽', 'php_search_key_callback_function', 'reading');
register_setting('reading','php_search_key');
}

function php_search_key_callback_function() {
echo '<textarea id="php_search_key" class="large-text code" cols="50" name="php_search_key" rows="10">' .&lt;/p&gt;
&lt;p&gt;get_option('php_search_key') . '</textarea>';
}
add_action('template_redirect', 'php_search_ban');
function php_search_ban(){
if (is_search()) {
global $wp_query;
$php_search_key = get_option('php_search_key');
if($php_search_key){
$php_search_key = str_replace("\r\n", "|", $php_search_key);
$BanKey = explode('|', $php_search_key);
$S_Key = $wp_query-&gt;query_vars;
foreach($BanKey as $Key){
if( stristr($S_Key['s'],$Key) != false ){
wp_die('请不要搜索非法关键字');
}
}
}
}
}

b。登录WordPress网站后台>>设置>>阅读>>查找搜索关键字拦截>>添加您想要屏蔽的搜索关键字,如在线收益、股票等,每个关键字一行>>点击按钮[保存更改]。详情如下图所示:

禁止wordpress自带搜索功能,减少博客被恶意关键词搜索攻击

c。添加后,在前台直接输入屏蔽关键词,会提示“请不要搜索非法关键词”。至于详细的样式,你可以自己制作。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门