使codeigniter在$ _GET上运行?

时间:2010-07-03 01:19:15

标签: regex codeigniter codeigniter-url

我遇到CI处理$ _GET的问题,并找到了克服它的方法。

问题是,你能在这里看到任何安全问题吗?

我的网址像

一样
/contacts
/company/info

CodeIgniter上的默认控制器名为 index

只要我遵循$_GET,我就可以使CI符合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 个答案:

答案 0 :(得分:1)

不。只要你不盲目信任$ _GET [](你不应该相信),你就是好的。