0

CIが$_GETを処理する際に問題が発生し、それを克服する方法を見つけました。

問題は、ここでセキュリティの問題を確認できますか?

私は私のURLを次のようにすべて持っています

/contacts
/company/info

そして、CodeIgniterのデフォルトのコントローラーはインデックスと呼ばれます

$_GETに従う限り、 CIをで動作させることができます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']

私は正規表現の専門家ではないので、ここでセキュリティの問題の可能性を確認できますか?

/*
|---------------------------------------------------------------
| 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);

ありがとうございました。

4

1 に答える 1

1

いいえ。$ _GET []をやみくもに信用しない限り(とにかく信用してはいけません)、あなたは大丈夫です。

于 2010-07-03T01:23:36.723 に答える