我遇到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);
谢谢。
答案 0 :(得分:1)
不。只要你不盲目信任$ _GET [](你不应该相信),你就是好的。