代码之家  ›  专栏  ›  技术社区  ›  Frankie

让“代码点火器”在$上工作?

  •  0
  • Frankie  · 技术社区  · 14 年前

    我在处理ci时遇到了问题,找到了一种方法来克服它。

    问题是, 你能看到这里有什么安全问题吗?

    我有各种各样的网址

    /contacts
    /company/info
    

    我的默认控制器在代码点火器上被调用 指数

    我可以让CI表现得 $_GET 只要我跟着 class/function/default_controller .

    这两个URL的作用都是:

    // 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'] .

    我不是Regex的专家,所以,你能在这里看到一个可能的安全问题吗?

    /*
    |---------------------------------------------------------------
    | 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 回复  |  直到 14 年前
        1
  •  1
  •   Aaron Yodaiken    14 年前

    不。只要你不盲目地相信得到的美元(无论如何你不应该这样做),你就很好。