这两天见到有人又开始在刷我的xmlrpc接口玩登陆什么的了,感觉莫名的烦躁,随后将接口屏蔽之。屏蔽方法有很多种,随便列举几种。
- 删除根目录下的xmlrpc.php文件,简单粗暴有效,问题是一更新麻烦又来了。
- 写个函数放在functions.php中,屏蔽这个功能,问题是这个没试过,还得研究过滤器是哪个。
- 直接nginx或apache在配置文件屏蔽文件,会配置服务器就行。
当然,我采取了方式三,毕竟之前就是这么干的,这个东西很好的屏蔽了wp-comments.php的接口,彻底摆脱垃圾评论。
Nginx配置代码如下:
location ~/xmlrpc\.php* {
rewrite (.*) /index.php;
}
rewrite (.*) /index.php;
}
这样请求被重定向到index.php就是wordpress主页,然后就404了,还是相当高明的,虽然很简单,当然你也可以直接return 403或404之类的,看你自己的喜好了。
但是这样干之后,我打开手机版的wordpress客户端,问题发生了,无法访问了,这或用了xmlrpc接口,加入白名单即可,可以使用UA或IP等等,不过针对手机还是用UA最好了。可以在nginx上针对UA过滤,但是我不会这么干,有种太傻的感觉,如果这样干了,以后要改也太麻烦了。遂将配置文件改为如下:
location ~/xmlrpc\.php* {
rewrite (.*) /xmlrpc_rewrite.php;
}
rewrite (.*) /xmlrpc_rewrite.php;
}
在根目录先新建一个xmlrpc_rewrite.php的文件,接下来想做什么逻辑都可以,要找出那些没事刷接口的也容易,只是依据你设置的白名单,然后来段代码:
<?php
if(preg_match("/wp-android/i",$_SERVER['HTTP_USER_AGENT'])){
include __DIR__."/xmlrpc.php";
}else{
include __DIR__."/index.php";
}
if(preg_match("/wp-android/i",$_SERVER['HTTP_USER_AGENT'])){
include __DIR__."/xmlrpc.php";
}else{
include __DIR__."/index.php";
}
这样既可达到自定义过滤的目录,肯定也会有人想,如果单纯从USER_AGENT过滤看,还不如直接利用Nginx的UA过滤呢,确实是这样的,但是我不会啊!!!!
一切都解决了,安心上班。
你现在只剩下姓名是必填的,只需在后台讨论中进行设置吗?
遇到几个喜欢乱填邮箱的,一堆退信,干脆给个默认的,不用填了。自己修改的JS
没留意、小小博客没必要搞我吧
你那边我不知道,我这边强制登录的比较多
很不错的分享!
我以前用Windows live writer编辑器写博的时候客好像就要用到这个文件,后来博客地址变成https以后编辑器就连接不上博客,后来也就适应后台编辑器了
我只是用来看看评论回复下而已。写东西还是没有用这个
xmlrpc 这文件具体干什么的,到现在没弄明白。
目前我就发现移动版的Wordpress可用,其他用途不明