使用钩子技术保护子比主题搜索页面免受恶意攻击

本文共计2892字,阅读大约10分钟。

大鹏看到子比论坛的李初一发布了一篇关于“子比主题防止搜索页被恶意留痕解决方案”的帖子。本文将介绍一种不修改文件的钩子终极版防护措施。

图片[1]–使用钩子技术保护子比主题搜索页面免受恶意攻击–大鹏个人资源分享网–专注于插件软件资源教程技术分享!

首先,添加一个用于检测搜索关键字的后台设置钩子:

将其放入 functions.phpfunc.php 文件中。

// 自定义屏蔽搜索关键字
function dp_php_search_ban_key() {
	add_settings_field('php_search_key', '搜索关键词屏蔽', 'dp_php_search_key_callback_function', 'reading');
	register_setting('reading','php_search_key');
}
function dp_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>';
}
function dp_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 ) {
                    get_header();
                    echo $img . '<div class="text-center mt30 f404-msg">请不要搜索非法关键字!</div>';
                    get_template_part('template/content-404');
                    get_footer();
                    exit;
                        
				}
			}
		}
	}
}
add_action('admin_init', 'dp_php_search_ban_key');
add_action('template_redirect', 'dp_php_search_ban');
图片[2]–使用钩子技术保护子比主题搜索页面免受恶意攻击–大鹏个人资源分享网–专注于插件软件资源教程技术分享!

然后,将搜索页面的子比 wp_head 钩子替换为自己的钩子。

// 自定义屏蔽搜索关键字
function dp_php_search_ban_key() {
	add_settings_field('php_search_key', '搜索关键词屏蔽', 'dp_php_search_key_callback_function', 'reading');
	register_setting('reading','php_search_key');
}
function dp_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>';
}
function dp_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 ) {
                    remove_action('wp_head', 'zib_seo', 1);
                    add_action('wp_head', 'dp_seo', 1);
                    function dp_seo()
                    {
                        echo '<title>非法关键字检测</title>' . "\n";
                        echo "<meta name=\"keywords\" content=\"非法关键字检测\">\n";
                        echo "<meta name=\"description\" content=\"非法关键字检测\">\n";
                    }
                    get_header();
                    echo $img . '<div class="text-center mt30 f404-msg">请不要搜索非法关键字!</div>';
                    get_template_part('template/content-404');
                    get_footer();
                    exit;
                        
				}
			}
		}
	}
}
add_action('admin_init', 'dp_php_search_ban_key');
add_action('template_redirect', 'dp_php_search_ban');

本教程到此为止,创作不易,请转载时注明来源于大鹏博客!谢谢!

© 版权声明
THE END
点赞8赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容