解决本地自签名证书的Https站点在Firefox和Chrome浏览器中无法访问得问题

文武双全在开发web站点时,多在windows10操作系统下,通过virtualbox软件和vagrant脚本搭建虚拟机用来作为开发环境。最近被一个坑爹的问题耽误了很长时间,firefox和chrome等浏览器更新到最新版以后,由于本地站点开启了https,导致本地发布的自签名SSL证书不被这些浏览器信任。站点在firefox和chrome中无法打开。学习了一段时间,终于解决了这个问题。以下是这个问题的解决办法,特此分享。

Continue reading

零成本打造最强跨平台开发环境—使用VSCode编辑器通过vagrant操作VirtualBox虚拟机

几乎所有的开发人员都会为配置开发环境所烦恼,目前文武双全找到了一套零成本打造史上最强开发环境的套路。可以很方便的通过VS Code编辑器集成Git Bash命令行工具,利用Vagrant直接在编辑器内操作VirtualBox虚拟机的各种镜像。不敢独享,分享与各位。

Continue reading

纪念文武双全在github上的第一个Pull Request

我师傅老早就告诉我github这个网站了,开始以前英文不好,上的也少。最近一年,师傅教我的越来越少了,只能自己想办法学习了。想来想去发现最好的学习方法,还是去看别人的源代码。于是,最近一年我对github的重视程度,就变得越来越高了。直到2016年12月5号,文武双全在github上提交了自己的第一个Pull Request。

Continue reading

调试SSH登录Git服务器的方法—来自GitHub官网

文武双全最近又开始折腾Git了,一开始我是把代码托管在GIT@OSC。然后文武双全使用Brackets SSH远程连接到OSC的Git服务器,PUSH文件的时候出现报错。百度查了好久,始终得不到解决问题的方法。后来不小心跑到Github的官网Help,找到一些SSH的debug的帮助文章,哈哈这下有救了。

Continue reading

文武双全遭遇一起利用wordpress的pingback漏洞发起的DDOS攻击

爷保佑下,成功处理了这一起利用wordpress的pingback漏洞发起的DDOS攻击。下面跟大家分享下,解决这次DDOS攻击的全过程。

第一步:登录服务器查看服务器的状态

幸运的是我当时正在服务器上,马上使用linux的top命令查看系统负载,发现系统负载已经到5以上了。幸运的是,这个时候服务器还能连上,但是已经出现了很明显的卡顿。平时服务器最多使用3个php-fpm进程,现在4个进程全部高负载运行,nginx和php-fpm占用的内存都快吓死本宝宝了。 再使用free -m一看内容占用,平时只使用大概300多M的内存,全部曝掉了。2GB的Swap内存已经跑了700多M了,这就是系统负载那么高的原因,磁盘IO亚历山大啊。

明显感觉到是被人DDOS或者CC了,立刻使用命令关掉了nginx,服务器瞬间变成流畅无比。

第二步:下载并检查网站日志

立刻下载网站的访问日志和错误日志,打开访问日志一看,“呦西,果然被人攻击了”。日志截图如下,

[caption id="" align="aligncenter" width="750"]2015年8月14日文武双全个人网站被DDOS攻击的日志 2015年8月14日文武双全个人网站被DDOS攻击的日志[/caption]

日志把攻击者的特征记录的很明显,使用了翻墙到美国DataShack的服务器,然后发动了针对文武双全个人网站的DDOS攻击。让文武双全干感觉到意外的是,日志里竟然出现了非常奇怪的特征。大量的出现“wordpress”、“verifying pingback from”这样的日样,为文武双全寻找攻击的原因提供了最重要的信息。

第三步,搜索特征码查找攻击方式和解决方法

哈哈,这一次度娘给力了。使用百度搜索关键词“verifying pingbanck”,果然搜索到类似的攻击。搞笑的是我国台湾省的某地方政府网站,竟然也使用wordpress,而且也遇到了同样的攻击方式。如下图所示,

[caption id="" align="aligncenter" width="750"]我国台湾省某地方政府网站也曾遭受过类似的ddos攻击 我国台湾省某地方政府网站也曾遭受过类似的ddos攻击[/caption]

一看此文,文武双全就知道了,原来黑客是利用了wordpress自身的pingback漏洞。百度再次检索pingback是啥玩意,看了说明才恍然大悟。这次被攻击,原来是因为昨天文武双全开启了wordpress的pingback的功能所导致的。

第四步,解析wordpress的pingback漏洞并成功处理漏洞

如下图所示,所谓pingback漏洞实际上并不能算一个漏洞,他只是wordpress后台后台的一个功能而已。在wordpress后台的,设置–>讨论–> 栏目里。

[caption id="" align="aligncenter" width="719"]wordpress的pingback和trackback功能 wordpress的pingback和trackback功能[/caption]

这个功能就是在其他的wordpress博客引用文武双全个人网站的文章时,会想文武双全个人网站发送一个通知,就是所谓的pingback。很显然这个pingback和trackback一样,只是wordpress定义的一个函数。选择接受,相当于把函数变成了公共函数,外部可以访问。不接受,则意味着函数变成了私有函数,外部不能访问。

一旦开放,则意味着黑客可以访问这个公共函数。于是就可以通过代理服务器公共函数的访问地址,发动DDOS攻击了。当然,文武双全还没有看过pingback和trackback的源代码,以上内容纯属猜想,哈哈。仅凭着猜想,我还是做出了决定,把pingback功能取消。

对方的服务器在美国,我偷偷开启了nginx,应该会有一段时间的缓冲器,服务器才会彻底死掉。于是我偷偷打开了nginx,然后发现网站可以访问。立即登陆wordpress的后台,关掉了pingback的功能。立即去查看系统的负载,果然在慢慢降低。free -m命令查看内存,果然都释放掉了,网站前台打开的速度也恢复正常了。难道就这样不到一个小时就解决了,我自己都有点不太相信。

第五步,攻击者的代理服务器丢包严重

这算是本次事故的一个彩蛋吧,闲着没事文武双全ping了一下攻击者的服务器ip地址:192.187.118.162。发现丢包那是相当的严重啊,哎都是江浙沪电信限外网导致的。连黑客都受影响了,不然文武双全很有可能无法远程登录到服务器上去,哈哈。

[caption id="" align="aligncenter" width="568"]黑客ddos攻击所使用的美国服务器丢包严重 黑客ddos攻击所使用的美国服务器丢包严重[/caption]

高达37%的丢包,真是晕死了啊。这延迟还是蛮低的,比一般的美国服务器250ms的速度要快不少哈。要是以后稳定了,文武双全也想搞一台呢。

 

 

Continue reading

解决一例WordPress更新主题后网站报错500并且显示空白页的故障

遇到问题了,这一次更新主题后再次碰到同样的问题。幸运的是,这一次我找到了解决故障的办法,感谢我的PHP技术又增进一步。

wordpress更新主题后网站报错500并且显示空白

这个故障很搞笑,就是我在升级完最新版的主题后个人网站出现了无法打开的故障。用F12一看,妈个蛋首页竟然报错500。网站首页就是一个空白页,啥也显示不出来。虽然明明知道是模板有问题,但是咨询了模板的作者威言威语大大,他也没说个所以然啦。只能自己想办法了,百度一搜还真的搜到解决问题的方法了。

巧用Wordpress的debug模式找到报错的文件

众所周知,wordpress是用php做的。php语言本身就有一个debug的功能,这个功能的背后实际上就是一堆封装的函数。理论上说,所有用php做的网站都可以打开debug模式来查找有问题的php网页文件。比如说国内众多的thinkphp框架做的网站,以及各种CMS做的网站,都支持通过开启debug功能查找有问题的网页甚至精确告诉你哪一行代码有问题。

模板自带的去除谷歌字体的功能和插件冲突导致

威言威语大大升级weisay主题后,在网站的function.php文件里增加了一个函数。这个函数的作用就是去除wordpress网站自身调用的所有谷歌字体,但是这个功能毫无疑问就跟那些去除谷歌字体的插件冲突了。网站报错500并且显示空白页的故障,就是由此而起。感谢php的debug,让我轻易的就找到了故障的代码。

开启wordpress网站debug模式的方法

[caption id="" align="aligncenter" width="629"]wordpress开启debug模式显示模板错误文件及行数 wordpress开启debug模式显示模板错误文件及行数[/caption]

这个方法其实非常的简单,打开wordpress网站根目录下的配置文件wp-config.php。找到如下这一行代码,这行代码实际上就是定义了一个常量,控制wp开启了开发者的调试模式。

define(‘WP_DEBUG’, false);

将默认的false改成ture,wordpress就开启了调试模式啦。再去有故障的网页刷新下,就能显示出网站错误的或者有冲突的代码段了。这个功能适用于,所有php网站的故障查找和调试。

解决个人网站显示空白页的方法

知道了问题所在,解决问题的方法就很简单了。

第一,将模板function.php文件的去除谷歌字体的函数注释掉或者直接删掉;

第二,将去除谷歌字体的插件删除,留下模板里的去除谷歌字体的函数。

文武双全总结

作为一个个人网站的站长,必须要学习web开发的相关技术。这些技术能够保证个人网站在发生各种故障时,自己有能力解决。

 

Continue reading

解决一例wordpress的首页内容编码错误导致网站无法打开的故障—nginx下gzip与wp-super-cache插件冲突

rdpress故障

我用360安全浏览器可以正常访问网站首页,而且可以登陆后台,我甚至还撰写了一篇文章。但是打开百度统计,最近两天的访问接近于0。搜索引擎的排名是好的,这说明外部流量正常。只是他们都打不开网站,导致百度统计没有统计到数据。更加搞笑的是,百度站长平台的抓取工具竟然能够正常抓取。。。

解决问题的关键点是我发现,用ie10.0、firefox、谷歌等非360安全浏览器,全都打不开。这让我彻底排除了,是站外因素导致的故障,把焦点集中到了站内。而站内我最近做的最大的改动,就是在持续攻击下,把服务器的web引擎从nginx+apache切换到单一的nginx。由于最近一段时间连续被攻击,我对于nginx的了解更加深厚了。我们公司的网管,用单一nginx跑php网站也给了我信心。我终于不再惧怕曾经让我为之疯狂的502报错,彻底转向nginx了。

故障原因是因为nginx下gzip与wp-super-cache插件冲突

百度找到的所有故障原因,都是错误的。我的php已经升级到最新的php5.6.5版本,nginx也升级到最新的1.7.9版本,不太可能是他们造成的。最大的可能,还是在wordpress以及wordpress插件本身。事实上,我后来的猜测是正确的。故障的原因实际上是这样的:

wp-super-cache插件,默认推荐的是apache下的mod_rewrite 缓存模式,这一模式会修改网站根目录下的.htaccess伪静态规则文件。所有已经缓存的页面,都是基于这个规则。mod_rewrite是基于apache的,文武双全切换到nginx后,就无法使用这一缓存模式了。只能选择第二种,php缓存模式。按照官方的说法,php缓存模式与mod_rewrite缓存模式速度上差不多。切换到php缓存模式后,在测试缓存时竟然报错了。两个首页的缓存文件,时间戳不一致,而这才是首页编码错误的真正症结。清空掉根目录下的.htaccess文件,只留开始和结尾语句。

在查看wp-super-cache的高级选项时候,我突然看到“压缩默认已禁用,因为有些主机对压缩过的文件处理有问题。勾选或取消勾选该功能会清除缓存。” 这样一段话。我突然领悟到,可能是Gzip与wp-super-cache有冲突导致的。Gzip和wp-super-cache都会对页面进行压缩,可能是两者的压缩方式产生冲突互不兼容,就好比家里电脑安装了两个杀毒软件一样。

在取消掉“压缩页面以便让来访者更快浏览”的选项后,在测试缓存,神奇的一幕竟然出现了。妈个蛋,缓存测试成功了。好吧,困扰我两天的网站打不开的问题,终于给解决了。

只有firefox能够正确报错

firefox还是开发者的神器啊,在遇到问题后只有firefox能够第一时间给我报错。360安全浏览器竟然可以在编码错误的情况下正常访问网站并登陆后台,ie只能显示打不开网站,谷歌也是这样,百度同样垃圾。唯独firefox,正确报错是编码错误导致的网页无法打开。在进行wp-super-cache缓存测试时候,生成的首页静态文件1.html和2.html确实是乱码的,乱码的具体原因至今未明。

这两天我尝试了各种方法

因为百度不到方法,我瞎猫撞死耗子一样用了各种方法。

1,nginx配置文件各种修改,调试;

2,站点配置文件也是各种修改,调试;

3,iptables防火墙规则全部清空了,都没用,哥他妈手动加了600条规则啊;

4,防DDOS和CC攻击的Mod全部取消掉了;

5,连解析都恢复到阿里云的云盾WAF了;

哎,真是苦逼啊。当你遇到问题的时候,找不到解决问题的方法,真他妈蛋疼。一切还是得靠自己啊,百度现在越来越不靠谱了。

[caption id="" align="aligncenter" width="650"]wordpress网站的内容编码错误报错 wordpress网站的内容编码错误报错[/caption]

以上是故障截图,感谢firefox。最后,文武双全只能无奈的说:wordpress不仅自己坑多,插件的坑更多啊。

Continue reading

文武双全告诉你wordpress中的那些大坑

an style=”color: #ff0000;”>第一大坑:内置谷歌字体等大量谷歌的资源

当然这个不是wordpress的错,是我们天朝伟大的GWF的错,但这确实是个大坑。谷歌的CDN确实非常棒,速度非常快,但是在国内被墙的也太厉害了点。wordpress前台和后台都有大量的资源,连接向谷歌的网站,这些网站的打开速度已经无法忍受。虽然有一些插件,能实现屏蔽谷歌字体,但是这依然会拖慢你wordpress前台和后台的速度。

第二大坑:wordpress最知名的图片插件NextGEN Gallery无法再汉化

wordpress自身的图片管理功能很弱,需要依靠插件能扩展wordpress对图片的管理。但是自从1.9.13版本开始,NextGEN Gallery就无法再被汉化了。对文武双全这样的老wordpress来说,不怎么影响使用,我继续使用老版本的NextGEN Gallery就可以了。但是对于新玩家来说,这真真是个大坑了。

第三大坑:非常牛逼的TAG管理功能

TAG就是站长手动为文章添加的关键词,dedecms也有类似的功能,甚至可以自动提取tag。本来这个功能是个好事,很多wordpress模板的作者都开发了效果牛逼的TAG标签云集功能。但是由于百度专门出台算法,打击不相关静态结果搜索页。大量使用wordpress建立的网站,由于使用了大量的TAG而被百度误伤。谷歌由于数据抓取和存储的能力强,并不在乎站长多余的TAG占用了自己的资源,对tag和wordpress都是十分友好的。但是有钱并且垄断的百度,就是那么任性。

这个算法至今仍然在伤害很多wordpress的站长,也算是wordpress的天坑之一了。一些wordpress的插件,能把tag自动转内链。你试试吧,越用死得越快。

第四大坑:没有中文的开发者文档

wordpress并没有官方的中文开发者文档,以至于国内中文原创的wordpress模板数量并不多。少数精品wordpress模板,被广大wordpress几乎玩烂掉了。大量国外的模板,汉化并不完整,还有人拿汉化外国的模板来卖钱。想学wordpress模板开发,您先把英语学好再说吧。

这跟咱们本土的开源CMS相比,也算是个坑了。

第五大坑:代码臃肿,抗攻击的能力真的很差

wordpress代码本身的安全性还不错,至少比dedecms强多了。就像某个网友说过的那样,能黑掉wordpress代码的黑客年薪至少在百万以上。但是wordpress抗攻击的能力确实很差,这一点文武双全是深有体会。文武双全个人网站从2011年就开始使用wordpress,这期间被攻击的次数已经无法统计。

wordpress使用mysql作为数据库,不用几个并发链接就能把wordpress搞到mysql挂掉。如果把wordpress整站静态化,减少对mysql的请求次数,你会发现最简单不过的CC攻击,依然能把wordpress轻易搞挂掉。想把网站搞到一定规模,有雄心壮志的站长,还是算了吧。

第六大坑:垃圾评论满天飞,怎么防都防不住

虽然使用了Akismet和Math Comment Spam Protection两款防垃圾评论的插件,依然无法杜绝机器人发垃圾评论。

第七大坑:无法自定义栏目页的title

[caption id="" align="aligncenter" width="500"]wordpress真坑爹 文武双全告诉你wordpress中那些坑爹的事情[/caption]

这又是一个神奇的事情,神奇的无法想象。wordpress可以安装插件来让你自定义栏目的keyword和description标签,但是栏目的title确不能让你自定义。每一个栏目以及子栏目的title默认都是这样的:栏目别名 | 网站名字 。我敢说,十年前dedecms就能够对每一个栏目页乃至文章页自定义title了。

当然我也知道,就算title没有你想优化的关键词,关键词的排名你也能优化上次。但是你绝对不能否认,在中文搜索引擎里这他妈就是个大坑。

第八大坑:wordpress的内链功能极其的弱

你可能会说,你能找到一堆的插件让你的wordpress自动产生内链。但是我想说的是,这依然是个大坑。这些插件要么不支持老的文章生成外链,要么对中文关键词支持不够好,要么就是没汉化。

第九大坑:GWF丧心病狂到连Gavatar都墙

这一段是我在2014年12月31日添加的,因为今天登陆wordpress后台,突然发现好卡。立马F12看了一下,gavatar直接把进程卡死了。wordpress的前台和后台都要加载来自gavatar的用户头像,这么良心的网站都能被GWF强。这真是依法治国的最佳示范了,这不是wordpress的错,但确是wordpress的坑。

第十大坑:什么都依赖插件

这一段也是在2014年12月31日添加的,总算给wordpress的坑凑了个十全十美。虽然wordpress的插件功能很强大,数量也非常多,但是这也意味着wordpress自身的功能很单薄。什么都依赖插件的wordpress,经常因为插件用多了而搞得臃肿不堪。连个友情链接模板,都需要安装一个插件的blog系统,真的也可以说是丧心病狂了。

对中国用户来说,更加坑爹的是,我们大多数情况下只能用国外的英文插件。优质的汉化插件也是极少极少的,国产插件坑爹的也不少。于是,你想把一款英文插件用好,就得在百度忙活半天。这难道不是坑吗?

文武双全的总结

不可否认,wordpress确实是一个牛逼的blog乃至cms系统。但是在中文搜索环境中,它确实有非常多的坑。以至于我现在不仅仅不像人推荐wordpress,而且努力劝告大家学习中文开源CMS。在中国,本地化做得好的才能真正适应中国的国情。推荐大家去学习dedecms或者帝国cms,这些我们中国人自己开发的CMS,能够做出跟wordpress同样效果的任何网站。

忘记wordpress,拥抱我们中国人自己开发的开源CMS吧。

 

Continue reading

推荐一款wordpress的免费反垃圾评论插件—Math Comment Spam Protection

mment Spam Protection。

Math Comment Spam Protection的原理就是让用户在发表评论前做一道数学题

数量众多的wordpress垃圾评论,其实大多数都是机器群发的。在发表评论前,让机器做一道数学题,可以有效的解决这个问题。

Math Comment Spam Protection 的安装方法:

1,wordpress的后台——插件——安装插件——搜索“Math Comment Spam Protection  ”——选择安装插件;

Math Comment Spam Protection  的配置方法

没有完美汉化,但是配置也是非常简单的,以下是自动和手动两种配置方法;

1,自动配置

点击插件的“配置”选项——“Add math question field automatically”前面的框框选择——然后之后去评论页看看,Add math question field automatically是否正常,如果不正常,请选择手动配置;

2,手动配置

请把“Add math question field automatically”的框框去掉;然后把

<?php mcsp_html(); ?>

这句代码加到你wordpress主题的comments.php文件中;

具体位置不同的主题可能不同;

<p>
<input class=”submit” name=”submit” type=”submit” id=”submit” tabindex=”5″ value=”提交留言” />
<input class=”reset” name=”reset” type=”reset” id=”reset” tabindex=”6″ value=”<?php esc_attr_e( ‘重写’ ); ?>” />
<?php mcsp_html(); ?>
<?php comment_id_fields(); ?>
</p>

我的主题是放在上文代码中,其他主题请自行参考;

3,前台显示效果的修改;

如果不修改代码,那么评论框哪里会出现一段英文,对咱们中国的网民不是很友好的。

请到插件的设置面板中,用这段代码复制掉  HTML code for the math question field 对话框中的那么代码,然后请保存设置;

<p>
<label for=”[fieldname_answer]”>垃圾信息保护: [operand1] + [operand2] 之和是</label> <span class=”required”>多少?</span>
<input id=”[fieldname_answer]” name=”[fieldname_answer]” type=”text” value=”” size=”30″ aria-required=”true” />
<input type=”hidden” name=”[fieldname_hash]” value=”[result]” />
</p>

Math Comment Spam Protection 使用小结

文武双全也是今天才开始使用这个插件,具体的反垃圾评论作用还不太好评估。不过有一个可喜的效果是,文武双全个人网站的后台打开速度明显变快了。wordpress三大头痛的问题,CC攻击、垃圾评论攻击、数据库注入攻击,目前来看都在一步一步的缓解中。

该插件对个人博客的网站留言页面,同样有效果。

 

Continue reading