1、修改默认的用户名admin与密码
在wordpress安装时可以设置用户名,后期更改比较麻烦,所以尽量不要使用默认的用户名,网站密码可以在后台设置,尽量设置复杂一点,如果用户名已经使用admin,可以使用下面方法进行修改wordpress用户名。
方法一:后台新建一个用户,角色为管理员,然后使用新用户登录,删除默认的 admin 用户。
方法二:可以使用数据库管理软件Navicat for MySQL或者phpmyAdmin进入数据表wp_users ,将 user_login字段 和 user_nicename字段修改为您的新用户名。
2、修改wp-admin目录的访问权限
你可以通过限定IP地址访问WordPress管理员文件夹来进行保护,所有其他IP地址访问都返回禁止访问的信息。另外,你需要放一个新的.htaccess文件到wp-admin目录下,防止根目录下的.htaccess文件被替换。
3、设置主题文件权限
如果您不是需要经常修改主题文件的话,可以把主题文件,尤其是functions.php文件设置为禁止写入
4、隐藏WordPress版本信息
默认情况下会在头部输出WordPress版本信息,你可以在主题的 functions.php 最后面添加:
//隐藏版本号 function wpbeginner_remove_version() { return ''; } add_filter('the_generator', 'wpbeginner_remove_version');5、修改后台登陆地址
//修改WordPress后台登录地址 add_action('login_enqueue_scripts','login_protection'); function login_protection(){ if($_GET['hello'] != 'world')header('Location: /'); } 修改后的登陆地址为(如果登陆地址不正确就跳到到首页) http://www.xxxx.com/wp-login.php?hello=world方法二:首先找到wordpress根目录下的wp-login.php 搜索wp_shake_js找到下方代码
if ( $shake_error_codes && $wp_error->get_error_code() && in_array( $wp_error->get_error_code(), $shake_error_codes ) ) add_action( 'login_head', 'wp_shake_js', 12 ); //在这段后面加入代码 if($_GET["aa"] !="bb"){header('Location:/404');} //后台地址就变成了 /wp-login.php?aa=bb6、wordpress加登陆验证码
(在主题文件function.php文件中添加) 方法一:
//后台登陆数学验证码开始 function myplugin_add_login_fields() { //获取两个随机数, 范围0~100 $num1=rand(0,100); $num2=rand(0,100); //最终网页中的具体内容 echo "<p><label for='math' class='small'>验证码: $num1 + $num2 = ?<input type='text' name='sum' class='input' value='' size='20' tabindex='4'>" ."<input type='hidden' name='num1' value='$num1'>" ."<input type='hidden' name='num2' value='$num2'></label></p>"; } add_action('login_form','myplugin_add_login_fields'); function login_val() { $sum=$_POST['sum'];//用户提交的计算结果 switch($sum){ //得到正确的计算结果则直接跳出 case $_POST['num1']+$_POST['num2']:break; //未填写结果时的错误讯息 case null:wp_die('提示: 请输入验证码.');break; //计算错误时的错误讯息 default:wp_die('提示: 验证码错误,请重试.'); } } add_action('login_form_login','login_val'); //后台登陆数学验证码结束方法二:
/*-----------------------------------------------------------------------------------*/ /* WordPress登陆后台随机混合数验证码 /*-----------------------------------------------------------------------------------*/ # 登录后台添加验证码第一种 function loper_login_english_figures() { # 获取英语和数字随机数, 范围0~99,目前是0~5,5位数 $num1=substr(md5(mt_rand(0,99)),0,5); echo "<p> <label for='math' class='small'>验证码:$num1 </label> <input id='math' type='text' name='sum' class='input' value='' size='25'> <input type='hidden' name='num1' value='$num1'></p>"; } add_action('login_form','loper_login_english_figures'); # 判断验证码是否空白和错误 function loper_login_calculation() { $sum=$_POST['sum']; switch($sum){ case $_POST['num1']:break; case null:wp_die( __( '错误:请填入验证码!' ), '', array( 'back_link'=>true ) );break; default:wp_die( __( '错误:验证码不正确!' ), '', array( 'back_link'=>true ) );} } add_action('login_form_login','loper_login_calculation');7、修改wordpress数据表前缀
a、一般在我们安装wordpress就尽量修改默认的数据表前缀wp_ 后期再更改会有些麻烦
b、 如果已经使用了默认数据前缀改如更改呢?下面是具体更改方法
修改数据是一件风险很高的工作,开始之前必然就是做好数据库备份
修改数据库前缀
打开你的 wp-config.php 文件,把数据库前缀 wp_ 改成你想要的前缀,比如 22vd_。
$table_prefix = '22vd_';
修改数据表名字
打开 PHPMySQL,找到你的数据库,然后执行以下 SQL,把所有数据库表前缀从 wp_ 改成 22vd_ 。
RENAME table 'wp_commentmeta' TO '22vd_commentmeta';
RENAME table 'wp_comments' TO '22vd_comments';
RENAME table 'wp_links' TO '22vd_links';
RENAME table 'wp_options' TO '22vd_options';
RENAME table 'wp_postmeta' TO '22vd_postmeta';
RENAME table 'wp_posts' TO '22vd_posts';
RENAME table 'wp_terms' TO '22vd_terms';
RENAME table 'wp_term_relationships' TO '22vd_term_relationships';
RENAME table 'wp_term_taxonomy' TO '22vd_term_taxonomy';
RENAME table 'wp_usermeta' TO '22vd_usermeta';
RENAME table 'wp_users' TO '22vd_users';
修改 Options 表中的数据
使用下面语句把 options 表中的 option_name 以 wp_ 开头的值改成 22vd_ 开头。
SELECT REPLACE(option_name, 'wp_', '22vd_') FROM wpdx_options;
修改 UserMeta 表中的数据
使用下面语句把 UserMeta 表中的 meta_key 以 wp_ 开头的值改成 22vd_ 开头。
SELECT REPLACE(meta_key, 'wp_', '22vd_') FROM wpdx_usermeta;
记住,没有什么是100%安全的,如果连政府的网站都能被攻破,又何况是你的呢!一定要经常备份网站,备份可以让你在遇到突然状况时快速恢复你的网站,备份是你面对WordPress攻击时的第一道屏障。
其他
8、只允许指定用户进行插件与主题管理操作 (如 admin)
// 只允许指定用户(如 admin)进行插件与主题管理操作 add_filter('user_has_cap', 'restrict_plugin_and_theme_actions', 10, 4); function restrict_plugin_and_theme_actions($allcaps, $cap, $args, $user) { // 允许操作插件和主题的用户名 $allowed_username = 'newhuijue_@2025'; // 当前用户对象 $current_user = wp_get_current_user(); // 如果不是指定用户,限制相关权限 if ($current_user->user_login !== $allowed_username) { $restricted_caps = [ 'install_plugins', 'activate_plugins', 'update_plugins', 'delete_plugins', 'install_themes', 'switch_themes', 'update_themes', 'delete_themes', ]; foreach ($restricted_caps as $rc) { if (isset($allcaps[$rc])) { $allcaps[$rc] = false; } } } return $allcaps; } // 隐藏插件与主题菜单入口,避免误操作或视觉干扰 add_action('admin_menu', 'hide_plugin_and_theme_menus', 999); function hide_plugin_and_theme_menus() { $allowed_username = 'newhuijue_@2025'; $current_user = wp_get_current_user(); if ($current_user->user_login !== $allowed_username) { remove_menu_page('plugins.php'); // 插件菜单 remove_menu_page('themes.php'); // 外观菜单 remove_submenu_page('themes.php', 'themes.php'); // 主题 remove_submenu_page('themes.php', 'theme-install.php'); // 安装主题 } }2、// 只允许特点用户名访问后台
add_action('admin_init', 'restrict_admin_access_to_specific_user'); function restrict_admin_access_to_specific_user() { // 允许访问后台的用户名 $allowed_username = 'admin'; // 当前用户对象 $current_user = wp_get_current_user(); // 如果用户已登录,且不是允许的用户名,且当前是后台访问请求 if (is_admin() && !defined('DOING_AJAX')) { if ($current_user->user_login !== $allowed_username) { // 方法一:直接退出(不建议用于有前台功能的用户) // wp_die('您无权访问后台。'); // 方法二:重定向到网站首页或自定义页面 wp_redirect(home_url()); exit; } } }9、可删除文件
✅可以删除的文件(前提:确认不再使用)
| 文件/文件夹 | 说明 | 删除建议 |
|---|---|---|
readme.html | WordPress 安装后默认生成,包含版本信息 | ✅ 可删除 |
license.txt | WordPress 的 GPL 授权许可文件 | ✅ 可删除 |
.git或.svn文件夹 | 如果误上传到了线上服务器,会泄露源码 | ✅ 可删除 |
.DS_Store/Thumbs.db | Mac 或 Windows 系统生成的无用文件 | ✅ 可删除 |
wp-config-sample.php | 配置文件样本,没用 | ✅ 可删除 |
xmlrpc.php | 提供远程发布接口,但常被攻击 | ⚠️ 如果不使用外部发布功能,可删除或禁用 |
10、安全加固 - 禁用 REST API、XML-RPC 和 Pingback
<?php /** * 安全加固 - 禁用 REST API、XML-RPC 和 Pingback */ // 确保在 WordPress 环境中执行 if (!defined('ABSPATH')) { exit; } /** * 完全禁用 REST API 对于未登录用户(更严格的方法) */ add_filter('rest_authentication_errors', 'disable_rest_api_for_guests', 99); function disable_rest_api_for_guests($result) { // 如果已经有错误,直接返回 if (!empty($result)) { return $result; } // 检查是否是 REST API 请求 if (defined('REST_REQUEST') && REST_REQUEST) { // 如果不是登录用户,返回错误 if (!is_user_logged_in()) { return new WP_Error( 'rest_disabled', 'REST API 已关闭', array('status' => 403) ); } } return $result; } /** * 移除 REST API 相关输出 */ add_action('init', 'remove_rest_api_links'); function remove_rest_api_links() { // 移除头部输出的 REST API 链接 remove_action('wp_head', 'rest_output_link_wp_head', 10); remove_action('template_redirect', 'rest_output_link_header', 11); remove_action('xmlrpc_rsd_apis', 'rest_output_rsd'); // 移除 HTML 中的 REST API 链接 remove_action('wp_head', 'wp_oembed_add_discovery_links'); } /** * 完全禁用 XML-RPC */ add_filter('xmlrpc_enabled', '__return_false'); // 额外安全措施:阻止 XML-RPC 访问 add_filter('wp_headers', 'remove_x_pingback'); function remove_x_pingback($headers) { unset($headers['X-Pingback']); return $headers; } /** * 禁用 Pingback 功能 */ add_filter('xmlrpc_methods', 'disable_pingback_methods'); function disable_pingback_methods($methods) { unset($methods['pingback.ping']); unset($methods['pingback.extensions.getPingbacks']); return $methods; } /** * 额外的安全措施:阻止通过 HTTP 头的 REST API 发现 */ add_filter('rest_enabled', '__return_false'); add_filter('rest_jsonp_enabled', '__return_false'); /** * 移除 REST API 相关的脚本和样式 */ add_action('wp_enqueue_scripts', 'remove_rest_api_assets', 100); function remove_rest_api_assets() { wp_dequeue_script('wp-embed'); } /** * 禁用 WordPress 心跳功能(可选,减少服务器负载) */ add_action('init', 'disable_heartbeat', 1); function disable_heartbeat() { wp_deregister_script('heartbeat'); }11、前端代码移除
/** Remove public platform metadata without disabling REST or XML-RPC endpoints. */ function umup_remove_discovery_metadata() { remove_action('wp_head', 'wp_generator'); remove_action('wp_head', 'rest_output_link_wp_head'); remove_action('wp_head', 'rsd_link'); remove_action('wp_head', 'wlwmanifest_link'); remove_action('wp_head', 'wp_shortlink_wp_head'); remove_action('template_redirect', 'rest_output_link_header', 11); remove_action('template_redirect', 'wp_shortlink_header', 11); // Also omit the WordPress version from feeds and other generator formats. add_filter('the_generator', '__return_empty_string'); } add_action('after_setup_theme', 'umup_remove_discovery_metadata');