WordPress 搜索框恶意关键词搜索,导致首页搜索框注入博彩链接?

加入会员,尊享特权

不是所有的网站开发者都有网站安全的理念,更多的草根站长每天为了流量而发愁,水桶底部只要有一个洞,水就能流光!网站安全做不到位,一切都是竹篮打水一场空。

网站安全应当引起重视

本来博主对各种黑客渗透手段是一无所知的,这几天耗费了些精力看了些黑客渗透网站的原理,找到了些对应策略,部署之后这几天服务器和网站终于算是清净了很多,前几篇文章都有介绍,大家感兴趣的话可以看看。

解决了别人网站的问题,我突然发现我的WordPress站点出现了这么个问题:

WordPress 搜索可能存在跨站漏洞

 

 

博主这几天打开网站,首页都自动跳转到搜索框,并被注入了博彩网站网址!持续时间不长,打开其他页面也没什么影响;巡查代码并未发现异常!
博主翻看了近几日的网站日志和防火墙记录,记录如下:
网站日志分析

 

61.151.163.73 ,这个ip在我的网站日志中有11478次记录,除了大部分的嗅探操作外,上百条记录都是在利用WordPress 搜索功能重复搜索各类博彩网站URL;
这有可能是是造成本博客首页打不开,自动跳转到搜索框,并搜索博彩站网址的原因,问题的根源找到了,我们尝试着解决一下:
1、通过网站日志分析恶意请求IP,并将它们屏蔽掉
2、WordPress 和市面上绝大部分的搜索,都是使用get方式进行的,也就是说,搜索词会传入到url通知程序,从而生成一个结果,如下图:
WordPress 搜索可能存在跨站漏洞
网站的内部搜索功能会被恶意的用户利用,在站内搜索中输入敏感关键词,导致搜索引擎不被收录的问题,甚至K站等问题,比如我们搜索上面的非法搜索词,就会产生一个动态的页面,url和title都会包含这个非法的搜索词,从而被安全系统所检测到。危害还是挺大的
解决:
屏蔽非法恶意搜索词,让这些页面不在产生的WordPress插件 themepark_search_key
或者
将以下代码添加到当前使用的主题 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 name="php_search_key" rows="10" cols="50" id="php_search_key" class="large-text code">' .
 
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->query_vars;
foreach($BanKey as $Key){
if( stristr($S_Key['s'],$Key) != false ){
wp_die('请不要搜索非法关键字');
}
}
}
}
}

 

2、登录 WordPress 网站后台 >> 设置(Settings) >> 阅读 >> 找到搜索关键词屏蔽 >> 添加您想屏蔽的搜索关键词,如网赚、股票等,每个关键词一行 >> 点击【保存更改】按钮即可。具体如下图所示:
成功填写并屏蔽关键词之后,在前台输入已经屏蔽的关键词就会提示“请不要搜索非法关键字”,至于详细的样式大家可以自行 DIY。

 

 

 

 

 

发表回复

后才能评论

评论(4)

  • 好推博客 2020-01-02 12:05

    直接网站后台给我搞奔溃了,替换文件升级都不行,设置阅读页面无法访问

  • lim 2021-04-15 19:21

    我设置了数字 和一到十,好像没有效果 我想到的方法是限制搜索词只能多少个字

  • 林氏 2021-04-15 21:03

    我试着将“0”到“9”、“一”到“十”加入,但是很奇怪的是CHROME有效,而在IE中是无效的。目前更好的办法是搜索只允许6字符,即可过滤大多搜索