2012-05-04 10 views
4

私はCodeIgniter 1.7.1を使用しています。私の許可URI文字は、次のような設定されていますCodeIgniter URLでURIエンコードされた文字をどのように許可しますか?

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_()@&\-'; 

私はhttp://website.com/index.php/controller/method/test%21のようなアドレスを入力すると、ページがロードし、私にエラーを与えていない:

Code igniter: An Error Was EncounteredThe URI you submitted has disallowed characters.

私は理解していません。 %20(スペース)は使用できますが、%21(感嘆符)はありません。

+2

あなたが許可された文字のリストに感嘆符を持っていますが動作するべきである、これでそれをエスケープしてみてください?私は、ブラウザが%21を解釈すると思います!CodeIgniterが解析すると、 "%21"ではなく "!"と表示されます。 – Goldentoa11

+0

@ Goldentoa11可能なすべての句読点をリストに追加する必要がありますか?私はすべてのキャラクターが巨大なリストを書く必要を避けることを許すべきですか?この設定ファイルのコメントには、「あなたがしていることを知らない限り、すべての文字を許可しないでください」と書かれています。だから、もし私がすべての文字を許可すれば、どんなセキュリティホールが開かれるだろうか? – JoJo

+0

あなたの最初の質問によると、私はそれがあなたがしなければならないことだと思います。あなたの2番目の質問によると、CIがそれをしないと言ったら、私はそうではない舞台裏で何が起こっているのか理解していなければ、私はそれに従います。あなたの3番目の質問によると、どのような種類の穴が開けられるのか分かりません。 – Goldentoa11

答えて

5

%21を解析する!コードネイターで。だからcodeigniterはこれをサポートしていません!許可されたURIのcofigファイルに:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_()@&\-!'; 
+0

URLの約(+)は –

+0

私はこのように追加しようとすると、URLに許可されていない文字を '$ config ['permitted_uri_chars'] = 'az 0-9〜%。:;、_^$ - +'; ' –

-1

\\+ 
関連する問題