1

私は、1つのWebサイトでセキュリティの問題を扱う新しいCI開発者です。

私は次のようなURLを持っています:

http://myweburl/Everything/gov/2

「2」は、dbを照会するパラメーターを示します。

これが私の質問です:誰かが次のURLをナビゲートする場合:

http://myweburl/Everything/gov/2/order.txt

実際にはURLには何もありませんが、空の結果ページが表示されます(返信200 OK)

これは私が望んでいたことではありません。彼が404エラーか何か他のものを受け取って、URLに何も含まれていないことをユーザーに知らせることを願っています。

誰かが私の目標を達成する方法の手がかりを教えてもらえますか?どうもありがとう!

4

1 に答える 1

1

基本的に、有効なページを表示するのは、それらがクエリのパラメータを表すURL内の正しい数のURIセグメントである場合のみです。

URI segments他のメソッドを呼び出す前に、前処理としての数を確認する必要があります。このようにして、URLに実際には1つのセグメントしかないことを確認できます。

に3つ以上のセグメントが存在することがわかった場合はURL、CodeIgniterがそのようなエラー処理を提供する便利な機能を使用して、それに応じてその状況を処理します。

URL内のセグメントの数が正しいかどうかを確認できます。希望どおりでない場合は、show_404()メソッドを呼び出します。

投稿したURLの例 http://myweburl/Everything/gov/2/order.txtでは、実際には4つのセグメントがあります。

    // from the docs http://codeigniter.com/user_guide/libraries/uri.html

     $total_segments = $this->uri->total_segments();

    // 3 segments would be the max if this is your url:
    // http://myweburl/Everything/gov/2/order.txt (this url contains 4 segments)
    //                 ^controller/function/uri_segment
    // this means that there are 3 segments in your URL
    // you don't want to have more than 3, so check for that
    // with the total_segments() function

     if($total_segments > 3)

     {
           $valid = false;
           show_404();

     }

     else 

     {

          $valid = true;

     }

     if($valid) 

     {

     // process data as usual

     }
于 2012-06-13T01:21:26.417 に答える