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

WordPress防止百度统计搜索攻击的解决方案(添加jQuery方法)

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

当我们网站启用流量统计,比如百度统计时,后来我们发现统计中除了正常的搜索词之外还有一些广告词。 ,这些话与我们的网站无关,我最初也没有在意。后来,广告词越来越多。这样专业术语就学会了“统计搜索攻击”。目前百度还没有更新。详细解释我们看一下统计搜索攻击(搜索攻击)的效果图:

WordPress防止百度统计搜索攻击解决之法(增加jQuery方式)

统计搜索攻击原理说明:

原理是利用WordPress的搜索结构,通过脚本不断的访问我们的网站,不仅可以让我们在统计后台看到广告,还可以利用我们的网站向搜索引擎推送广告词或访问过的地址,以加快这些恶意网址或词的收录速度。这样你的网站就成为这些不法分子传播不良信息的渠道这对网站的排名造成很大损害。 甚至可以被搜索引擎直接放到K站; 在网站上搜索“广告词”结构与搜索结构本身相同,只是将关键词替换为广告词,例如:

https://www.360mb.net/?s=广告词

阻止统计搜索攻击方法:

1。禁止搜索引擎收录搜索结果

该方法的目的是禁止搜索引擎收录搜索结果页面,无论是广告词还是自己的页面(一般我们不建议收录搜索结果页面,所以建议您还是禁用包含)。我们只需要在网站根目录下的robots.txt 文件中执行此操作即可。只需输入以下内容即可:

Disallow: /?s=*

注:国内很多搜索引擎都不遵守robots协议,比如斗,所以这个方法仅供参考或者大家自行测试!

2。使用代码阻止对某些关键字的搜索

1。我们将以下代码添加到当前主题文件夹中的/wp-content/themes/主题名称/functions.php文件中:

//屏蔽恶意关键词搜索
add_action('admin_init', 'ytkah_search_ban_key');
 
function ytkah_search_ban_key() {
	add_settings_field('ytkah_search_key', '搜索关键词屏蔽', 'ytkah_search_key_callback_function', 'reading');
	register_setting('reading','ytkah_search_key');
}
 
function ytkah_search_key_callback_function() {
	echo '<textarea name="ytkah_search_key" rows="10" cols="50" id="ytkah_search_key" class="large-text code">' . get_option('ytkah_search_key') . '</textarea>';
}
 
add_action('template_redirect', 'ytkah_search_ban');
 
function ytkah_search_ban(){
	if (is_search()) {
		global $wp_query;
		$ytkah_search_key = get_option('ytkah_search_key');
		if($ytkah_search_key){
            $ytkah_search_key = str_replace("\r\n", "|", $ytkah_search_key);
            $BanKey = explode('|', $ytkah_search_key);
            $S_Key = $wp_query->query_vars;
            foreach($BanKey as $Key){
                if( stristr($S_Key['s'],$Key) != false ){
                    wp_die('360模板吧温馨提示:请不要瞎JB搜索');
                }
	        }
	    }
	}
}

2。然后进入WordPress网站后台设置 -> 阅读 -> 搜索关键词拦截 -> 添加你想要拦截的关键词,一行一个关键词,如:

WordPress防止百度统计搜索攻击解决之法(增加jQuery方式)

注意:WordPress的拦截模式是只要存在该关键词即可,例如:“SEO 快速队列”返回搜索错误。函数方法非常容易定制,但这种方法最大的缺点是只有在别人已经搜索过之后才请求恶意关键字。

jQuery方法禁止搜索

将您网站的搜索框代码替换为以下代码,这样当其他人搜索恶意关键字时,搜索功能将不起作用。屏蔽恶意关键词的搜索动作实际上是放在搜索动作之前的(当用户输入恶意关键词时,提示生效,屏蔽搜索机制)。

搜索框代码:

<form role="search" method="get" id="searchform" class="searchform" action="<?php echo home_url( '/' ); ?>">     
    <input type="text" value="" name="s" id="s" class="required"/>
    <input type="submit" value="搜索" id="send" />        
</form>

拦截恶意关键字的 jQuery 代码:

<script>
    //为表单元素添加失去焦点事件
    $("form :input").blur(function(){
        var $parent = $(this).parent();
        $parent.find(".msg").remove(); //删除以前的提醒元素(find():查找匹配元素集中元素的所有匹配元素)
        //验证输入词
        if($(this).is("#s")){
            var nameVal = $.trim(this.value); //原生js去空格方式:this.replace(/(^\s*)|(\s*$)/g, "")
            var regName = /[~#^$@%&!*()<>:;'"{}【】恶意关键词]/;
            if(nameVal == "" || regName.test(nameVal)){
                var errorMsg = " 搜索词不能为空,不能包括限制词!";
                //class='msg onError' 中间的空格是层叠样式的格式
                $parent.append("<span class='msg onError'>" + errorMsg + "</span>");
            }
        }
    }).keyup(function(){
        //triggerHandler 防止事件执行完后,浏览器自动为标签获得焦点
        $(this).triggerHandler("blur");
    }).focus(function(){
        $(this).triggerHandler("blur");
    });
 
    //点击重置按钮时,通过trigger()来触发文本框的失去焦点事件
    $("#send").click(function(){
        //trigger 事件执行完后,浏览器会为submit按钮获得焦点
        $("form .required:input").trigger("blur");
        var numError = $("form .onError").length;
        if(numError){
            return false;
        }
    });
</script>

完全禁用 WordPress 内置搜索

完全禁用 WordPress 内置搜索,并使用外部站点搜索来替代原有的搜索机制。目前大多数主流WordPress主题都集成了第三方站内搜索功能。例如,Robin 的 Begin 主题集成了百度、搜狗、360 站内搜索,还提供了对 WordPress 内置搜索的开/关控制。可以说,这彻底解决了“恶意搜索攻击”这个长期存在的问题。同时,也防止无聊幼稚的人利用WordPress内置的搜索流量攻击和骚扰网站,如下图:

WordPress防止百度统计搜索攻击解决之法(增加jQuery方式)

关于将第三方搜索集成到WordPress中。使用百度获取引擎到该网站。这种方法的缺点是不太人性化。很多时候,搜索界面的内容并不是你要找的内容。此外,内容可能会丢失。

版权声明

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

热门