xmlrpc.php 存在于 WordPress 网站程序中,通过使用 HTTP 作为传输机制和 XML 作为编码机制来标准化这些通信来实现此目的。然而,xmlrpc.php 文件引入了安全漏洞,并且可能成为被攻击的目标。
最近网站大量 POST 请求 xmlrpc.php,导致 CPU 负载爆满,内存也比平时占用更多,感觉是被人扫描攻击了。所以这个涉及到了 WordPress 安全,必须重视起来。
XML-RPC 是支持 WordPress 与其他系统之间通信的规范。XML-RPC 不仅用于移动应用程序:它还用于允许 WordPress 和其他博客平台之间进行通信,还支持引用和 pingback。但是由于 REST API 已集成到 WordPress 核心中,因此 xmlrpc.php 文件不再用于此通信。
如果您的站点上启用了 XML-RPC,则黑客可能会利用 xmlrpc.php 在短时间内向您的站点发送大量 pingback,从而在您的站点上发起 DDoS 攻击。这可能会使服务器超载,并使站点无法正常运行。而每次 xmlrpc.php 发出请求时,它都会发送用户名和密码进行身份验证,所以,黑客可以使用它来尝试爆破您的站点。
在此基础上,我们 还发现了攻击//xmlrpc.php
地址,来耗尽 WordPress 站点的服务器资源,所以更加推荐最后一种方法。
因此,您现在应该在站点上禁用 xmlrpc.php,但是很多人不知道该如何停用 xmlrpc.php 文件,虽然将其删除是最简单的方法,但是由于 WordPress 经常升级,又会重新生成该文件,所以在此基础上,WPEXP 跟大家分享五个禁用 xmlrpc.php 的方法,供大家选择使用。
在当前主题的 functions.php 文件添加下面这行代码就能关闭 xmlrpc.php
复制
//通过 functions.php 函数文件禁用 xmlrpc.php
add_filter('xmlrpc_enabled', '__return_false');
在 WordPress 根目录编辑 wp-config.php 文件,最开始的地方添加:
复制
if(strpos($_SERVER['REQUEST_URI'], 'xmlrpc.php') !== false){
$protocol = $_SERVER['SERVER_PROTOCOL'] ?? '';
if(!in_array($protocol, ['HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3'], true)){
$protocol = 'HTTP/1.0';
}
header("$protocol 403 Forbidden", true, 403);
die;
}
Nginx 规则
复制
location ~* ^/xmlrpc.php$ {
return 403;
}
Apache 规则
在 .htaccess 文件前面添加以下代码。
复制
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
这个的前提要求需要保护好自己的服务器 IP 不被发现,在此基础上可以在云防火墙或者 CDN 中写好阻止 xmlrpc.php 访问,比上述所有配置都要进一步降低服务器性能的消耗,因为它还没有请求你服务器就被拦截了。
这里以 CloudFlare WAF 防火墙为例,在添加/xmlrpc.php
基础上,再添加一个//xmlrpc.php
以防万一。怕大家看不懂,这里使用 URI 完整,小伙伴们可以考虑使用 URI 包含规则,填写一个/xmlrpc.php
即可。
退而求其次,如果你有使用宝塔的 Nginx 防火墙,那么也可以使用防火墙来阻止 xmlrpc.php 访问。但是这个毕竟还是会涉及服务器资源的占用,在能够做好 IP 不泄露的情况下,使用云端防火墙或 CDN 去阻止是最好的!
1 如何安装和配置WP SMTP插件?
在通过WordPress网站发送和接收电子邮件时遇到麻烦?
电子邮件发送错误是WordPress中的常见问题。默认情况下,WordPress使用PHP mail()函数发送电子邮件。
但是问题在于许多WordPress托管服务器未配置为使用此功能,这就是为什么你的许多电子邮件,可能最终都位于垃圾邮件文件夹中,或根本无法发送的原因。
做邮件营销首先最重要的,是成功发送邮件到收件箱。
好消息是,可以通过在网站上轻松安装WordPress插件,和配置SMTP服务器来轻松解决此问题。
在本文教程中,我们将教你如何设置和配置SMTP,并使通信过程更流畅。
现在,就让我们开始吧。
你需要做的第一件事,是安装一个WordPress插件,例如:WP SMTP插件 ▼此进入WordPress官网 下载WP SMTP 插件
WP Mail SMTP插件可以通过改进和更改WordPress网站发送电子邮件的方式,来轻松解决电子邮件传递问题。 所以,让我们看看如何使用此插件。
我们将向你展示如何使用WP SMTP插件。
不同邮箱设置SMTP服务器地址有所不同,需要根我们所使用的SMTP服务器地址设置。
通常在邮箱的帮助页面,能够找到SMTP服务器地址。
QQ邮箱和Gmail的SMTP地址设置方法,可点击下方链接参考以下教程 ▼
QQ邮箱未开启IMAP服务 如何设置POP3/SMTP地址?
新媒体人做网络推广,需要注册各种账号,验证电子邮箱地址。外贸业务员做网络营销,经常使用电子邮箱联系客户。电商人收集用户反馈和意见,也是要用到电子邮箱。然而,手机QQ邮箱却提示……
Gmail如何开启IMAP/POP3?设置Gmail邮箱服务器地址
Gmail是所有做外贸SEO、电商从业者、网络推广人员必备的工具。不过,在中国大陆境内Gmail已无法打开……解决方法请参阅此文 ▼[jiawen ids=688]条件:必须为此方法所需的Gmail邮箱……
深入了解POP3和IMAP的区别,请浏览以下链接 ▼
POP3和IMAP是什么意思?哪个好?IMAP/POP3区别
邮件营销是众多网络营销方法中的一种,通常是结合数据库营销一起操作。电子商务网站除了必须做SEO,还需要将邮件营销和数据库营销结合,以促进转化率的提升。由于在使用邮件客服端时,是……
由于中国的互联网服务有太多限制非常麻烦,微信和QQ容易登录环境存在异常而被冻结账号,造成无法登录腾讯企业域名邮箱,所以规避此风险的方法,是改用Mail.ru邮箱绑定自定义企业域名邮箱。
希望我们网站( https://www.wordpressx.com/ ) 分享的《WordPress无法发送邮件?WP SMTP插件配置其他邮箱方法》,对您有帮助。
某些时候我们需要在网站上面展示出文章的评论数量,这时候就需要使用get_comments_number()函数,这个函数能够完美的实现这个需求。
语法
<
get_comments_number( int|WP_Post $post_id )
实例
<?php echo get_comments_number(); ?>
1 什么是 Redis 缓存?
你可能听说过 APC/APCu、Opcache、Xcache,它们可以显着加速 WordPress 或任何类型的受支持的 php 脚本。
在本教程中,我将向你展示如何使用 Redis 对象缓存加速 WordPress,我们将继续在 CWP 上安装 Redis 缓存,所以让我们开始吧。
第 1 步 :转到 CWP控制面板
导航到底部并找到“ redis
”并选中它然后点击“ Build
”按钮,在php重建过程完成后,你可以通过以下命令检查redis是否在运行 ▼
service redis status
你会得到这样的输出(在CentOS 7上测试,CentOS 6有不同的输出,比如“ running ”)
[[email protected] ~]# service redis status Redirecting to /bin/systemctl status redis.service ● redis.service - Redis persistent key-value database Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/redis.service.d └─limit.conf Active: active (running) since Sun 2022-02-20 16:41:24 +08; 12s ago Main PID: 2486 (redis-server) Status: "Ready to accept connections" CGroup: /system.slice/redis.service └─2486 /usr/bin/redis-server 127.0.0.1:6379
此时一切都很好,现在输入以下命令,检查 php redis 是否安装好了 ▼
php -m | grep -i redis
输出将是这样的 ▼
[[email protected] ~]# php -m | grep -i redis redis [[email protected] ~]#
如果输出为 redis
,那么一切都很好,我们将继续安装 WordPress 和 Redis 的集成。
安装CWP7控制面板的方法,请看这里 ▼
如何安装CWP控制面板?CENTOS WEB PANEL配置教程
如何安装CWP控制面板? CENTOS WEB PANEL配置教程 网络推广人员用VPS建站,有众多免费或付费的控制面板可以选择。 在不知道要如何选择功能齐全的VPS控制面板时,推荐使用CWP控制面板。 什……
第 2 步 :在 WordPress 中启用 redis-object-cache 插件之前,你必须在 wp-config.php
文件中添加以下定义 ▼
define( 'WP_CACHE_KEY_SALT', 'www.wordpressx.com
:' );
www.wordpressx.com
替换为你的网站。第 3 步 :登录到 WordPress后台 → 转到“插件” → “安装插件” ▼
Redis Object cache
点此进入WordPress官网 免费下载Redis Object cache插件
第 4 步 :假设你已经安装了 Redis Object cache
插件,现在导航到 Redis 设置并单击“启用对象缓存”。
WordPress启用 Redis 缓存加速插件后,它将显示“已连接”,如下图所示 ▼
特别声明:如果默认安装的程序是英文的,截图理所当然是英文的。
使用如下命令查看本地Redis缓存是否生成 ▼
redis-cli monitor
Redis缓存也可能会导致WordPress插件和WordPress主题修改不生效。
手动删除Redis缓存的命令▼
redis-cli flushall
#进入redis redis-cli #清空 flushall #退出 exit
查看Redis的memory配置 ▼
redis-cli info memory
返回查询结果 ▼
# Memory used_memory:24645472 used_memory_human:23.50M used_memory_rss:40558592 used_memory_rss_human:38.68M used_memory_peak:140777552 used_memory_peak_human:134.26M used_memory_peak_perc:17.51% used_memory_overhead:1619888 used_memory_startup:811872 used_memory_dataset:23025584 used_memory_dataset_perc:96.61% allocator_allocated:24964648 allocator_active:26865664 allocator_resident:37646336 total_system_memory:17179869184 total_system_memory_human:16.00G used_memory_lua:37888 used_memory_lua_human:37.00K used_memory_scripts:0 used_memory_scripts_human:0B number_of_cached_scripts:0 maxmemory:0 maxmemory_human:0B maxmemory_policy:noeviction allocator_frag_ratio:1.08 allocator_frag_bytes:1901016 allocator_rss_ratio:1.40 allocator_rss_bytes:10780672 rss_overhead_ratio:1.08 rss_overhead_bytes:2912256 mem_fragmentation_ratio:1.65 mem_fragmentation_bytes:15954144 mem_not_counted_for_evict:0 mem_replication_backlog:0 mem_clients_slaves:0 mem_clients_normal:20496 mem_aof_buffer:0 mem_allocator:jemalloc-5.1.0 active_defrag_running:0 lazyfree_pending_objects:0 lazyfreed_objects:0
以下是启动Redis缓存后,如何配置pid文件的方法 ▼
Redis找不到pid?Redis启动后如何配置pid文件位置地址
Redis启动找不到pid文件位置?Redis的pid文件在哪里?Linux怎么查看Redis进程pid文件位置地址?Linux 查找redis进程命令 ▼ps -ef | grep redis返回显示以下查询结果 ▼redis 28221……
希望我们网站( https://www.wordpressx.com/ ) 分享的《WordPress怎么用Redis加速缓存插件?CWP开启Redis缓存》,对您有帮助。
get_category_parents()函数使用分隔符输出当前文章的分类名称
语法结构
get_category_parents(int id, bool $link = false, string $separator = '/', bool $nicename = false)
参数
id (int)(必填) 类别ID
$link(bool)(可选) 是否使用链接格式 默认值:false,没有链接,true会显示当前链接
$separator (字符串) (可选) 分隔符 默认值: ‘/’
$ nicename(bool) (可选) 是否使用别名进行显示。默认值:false
案例
$cat_title = single_cat_title('', false);
$cat_id = get_cat_ID( $cat_title );
echo '>'. get_category_parents( $cat_id, true, ' > ');
这个函数可以用来做分类页面的面包屑导航