论坛首页 编程语言技术论坛

让nginx 支持PATH_INFO

浏览 4422 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-07-21   最后修改:2010-07-24
PHP
很多PHP框架默认使用PHP的PATH_INFO 来进行URL重写
当用Nginx作为http服务器的时候,就出现问题了,愿意是Nginx为定义PATH_INFO这个变量,我们想要使用PHP框架的PATH_INFO重写时候,必须定义这个变量

代码比较简单
 location ~ \.php($|/) {
		root	   /www/test;

		set $script     $uri;
		set $path_info  "";

		if ($uri ~ "^(.+?\.php)(/.*)$") {
		    set $script     $1;
		    set $path_info  $2;
		}

		fastcgi_index	index.php;
		fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param   PATH_INFO       $path_info;
		fastcgi_pass    unix:/tmp/php-fpm.sock;
		include	fastcgi_params;
    	}



这样PHP框架就可以使用PATH_INFO 重写了
   发表时间:2010-07-22  
危险
当请求 http://localhost/upload/test.jpg/test.php的时候,你说会怎样呢?
如果test.jpg里放的是php脚本,会发生什么事呢?
0 请登录后投票
   发表时间:2010-07-22  
这里是实现apche里PATH_INFO
 
   对于上传文件,肯定要验证文件的type
0 请登录后投票
   发表时间:2010-07-22  
isno 写道
这里是实现apche里PATH_INFO
 
   对于上传文件,肯定要验证文件的type



如果用flash上传控件,所有mime都是application/octet-stream,没法验证的

这里的漏洞是不能留给别人来处理的,你这里稍做rewrite就能解决
0 请登录后投票
   发表时间:2010-07-24  
pdreamer 写道
isno 写道
这里是实现apche里PATH_INFO
 
   对于上传文件,肯定要验证文件的type



如果用flash上传控件,所有mime都是application/octet-stream,没法验证的

这里的漏洞是不能留给别人来处理的,你这里稍做rewrite就能解决


谢谢提醒!
0 请登录后投票
   发表时间:2011-04-10  
仍然返回404  不行啊
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics