2010-07-03 60 views
0

我遇到了处理$ _GET的CI问题,并找到了解决这个问题的方法。

问题是,你能看到这里的安全问题吗?

我有我的网址一样

/contacts 
/company/info 

所有的方式和对笨我的默认控制器被称为指数

我可以让CI只要有$_GET表现为我按照class/function/default_controller

这两个网址的工作:

// class + function + default controller = ok 
/class/function/index?var1=this&var2=that 

// class + default controller = ok 
/class/index?var1=this&var2=that 

的事情是我想这些也工作

// class without function nor default controller = NOT OK 
/class?var1=this&var2=that 

// class + function without default controller = NOT OK 
/class/function?var1=this&var2=that 

我的解决办法是在$_SERVER['REQUEST_URI']一点正则表达式。

我不是专家的正则表达式,所以,你可以在这里看到一个可能的安全问题?

/* 
|--------------------------------------------------------------- 
| MAKE CODEIGNITER BEHAVE ON _GETS! 
|--------------------------------------------------------------- 
| 
| CI doesn't like to play ball with /contacts?a=23 and fails on several ocasions 
| This forces the first ? or & to be replaced by /index/ that is the default controller 
| 
*/ 
$_SERVER['REQUEST_URI'] = preg_replace('/\?|\&/', '/index/', $_SERVER['REQUEST_URI'], 1); 

谢谢。

回答

1

没有。只要你不盲目地相信$ _GET [](你不应该这么做),那你就很好。

+0

感谢您的意见! ;) – Frankie 2010-07-03 02:08:01