2016-08-25 14 views
1

私は、コードイグナイターの "form_validation"ライブラリは、コールバックの使用が可能であることに気付きましたが、その1つの条件であるため、メソッドをpublic宣言する必要があります。は、コード署名検証コールバックが安全ですか?

コードニティアを使った人は誰でも、コントローラのパブリックメソッドが外部から評価可能であることを知っています。私は、codeignitierがコールバックメソッドを呼び出すのを止めるコードを持っているかどうかを調べようとしました。

私は安全だと感じていないので、これはどれくらいのセキュリティリスクですか?

おかげで、 ダン

+0

コール可能を使用します。問題は解決しました。はい、私はあなたに同意します。コントローラーの公開方法はありません。さらに、薄型コントローラーが好きです。 http://www.codeigniter.com/user_guide/libraries/form_validation.html#callable-use-anything-as-a-rule – cartalot

答えて

0

は個人的に私はそれが安全だとは思いません。私が常にやることは、あなたが検証することができるCSRFトークンと、コールバック関数で両方を検証できる主な検証関数の中に入ったときに作成された別の一意の値など、

0

いつでもMY_Form_validation.phpライブラリーを作成し、パラノイアの背後で使用するカスタム検証方法を設定できます。コントローラで

<?php if (! defined('BASEPATH')) exit('Not your cup of tea.'); 

class MY_Form_validation extends CI_Form_validation 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function noone_can_see($str) 
    { 
     if ((string)$str !== (string)strrev($str)) 
     { 
      return FALSE; 
     } 
     else 
     { 
      return TRUE; 
     } 
    } 
} 

$this->form_validation->set_rules('username', 'Username', 'trim|required|noone_can_see', ['noone_can_see' => 'We still can not read the %s identically from both ways.']); 

読み込みライブラリが変更されません。まだautoload.phpにあり、'form_validation'のライブラリ配列の値であることができます。

関連する問題