Monthly Archives: April 2011

杭州行

xihu

复活节去了趟杭州,比去年人多。主要活动是吃饭,顺带看了看西湖。不知怎么有兴致爬了爬雷峰塔,当然爬完之后觉得这真是太蛋疼了。

张文杰回杭州才几个月就自己做了老板,手下掌管十多号人,让我觉得未来充满了希望。创业从来都不是那么遥远,倘若自己做不了老板,咱还可以给张老板打工,据说薪水不低。

楼外楼的菜没有想象中那么贵,可是东坡肉也没有想象中的那么好吃。杭州人和想象中一样那么有钱,并且比想象中更有时间,有白天开陆虎做黑车和的士抢生意的,也有晚上开保时捷出来摆地摊卖鞋的。

其实去之前就没有什么期待,所以也就没什么惊喜或者失望之类的感觉。再说上次去西湖也不过就是5年之前,坐在船上晒着太阳突然觉得该不是上次也是坐的这条破船——顿时没了游览的热情——导游的虫二字谜我是记得一清二楚,可却不知那无边的風月是在何处。

nginx php 错误配置导致安全漏洞

后知后觉发现了此文 Setting up PHP-FastCGI and nginx? Don’t trust the tutorials: check your configuration! 基本上是说,网上的大部分 nginx + php 配置教程中有一个错误,导致 php 会试图执行非 php 文件,甚至是用户上传的图片。

事实上看到此漏洞的描述我已经立刻想到问题之所在了,的确,之前我写的那篇配置笔记也是有此问题的。基本原理就是 nginx 配置中有这么一段

location ~ .*.php5?$ {
        include fastcgi_params;
        root /var/host/phpMyAdmin;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/var/run/php_fcgi.sock;
        fastcgi_index index.php;
    }

凡是以 .php 或者 .php5 结尾的 uri 都会被交给 php 处理,于是类似于 user.jpg/aaa.php 也会交给 php 处理,于是 user.jpg 就被当成 php 代码给执行了。

解决此问题的方法有好几种,codex.wordpress.com 上面提供的一种方式是如下修改 nginx 中有关 php 的配置。不过如果 nginx 和 php 不运行在同一台机器上时,此方法无效。

location ~ \.php$ {
	# Zero-day exploit defense.
	# http://forum.nginx.org/read.php?2,88845,page=3
	# Won't work properly (404 error) if the file is not stored on this server, which is entirely possible with php-fpm/php-fcgi.
	# Comment the 'try_files' line out if you set up php-fpm/php-fcgi on another machine.  And then cross your fingers that you won't get hacked.
	try_files $uri =404;

	fastcgi_split_path_info ^(.+\.php)(/.+)$;
	include fastcgi_params;
	fastcgi_index index.php;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#	fastcgi_intercept_errors on;
	fastcgi_pass php;
}