2011-12-04 7 views
1

この手法は十分安全ですか?このようなセッションを信用できますか?または私は何かを追加する必要がありますか?この認証/ログイン手順は安全ですか?

認証

class Controller_Membersonly extends Controller_Base { 

    public function action_index() 
    { 
     if ($this->_login === TRUE) 
     { 
      // Success... 
      echo 'Show (safely?) some secrets.'; 
     } 
    } 
} 
+0

OTですが、パスワードハッシュ方式では塩を使用していないようです。ハッシュは何を使っていますか?いくつかのプレーンなmd5/sha-x、あるいはbcryptのようなパスワードハッシュ用に設計された関数? – CodesInChaos

+1

これは単なるランダムな例です。そのため、コメントなどがあります。// Bcryptは行く方法です。 – kaulusp

+0

良い:) Btw私は、あなたのタグの1つを "php"タグの方に落とすことをお勧めします。これに答えることができる人の中には、お気に入りのタグとして "php"があるかもしれませんが、あなたのものではありません。 – CodesInChaos

答えて

0

この手法は十分安全です。私はこのようなセッションを信じることができた。

1

のみ-controller

class Controller_Base extends Controller { 

    protected $_login = FALSE; 

    public function before() 
    { 
     $this->_login = Session::instance()->get('login', FALSE); 
    } 
} 

メンバー-controller

class Auth { 

    public function login($user, $pass, $random_unique_salt) 
    { 
     if ($this->_bcrypt($pass, $random_unique_salt) === 'correct password hash') // etc. 
     { 
      // Success... 
      $session = Session::instance(); 
      $session->set('login', TRUE); 
      $session->regenerate(); 
     } 
    } 
} 

-moduleベース私が見る唯一の脆弱性はCWE-706 - Use of one way has with a predictable saltです。各パスワードには独自の固有の塩が必要です。 bcryptは、GPUやFPGAで効率的に実装することができないため、不正なパスワードハッシュ方式ではありません。

コードのスタイルは少し編集的ですが、悪いことではありません。あなたの比較演算子は少し過剰です。 fuzzy typing in phpを読んで、間違いを未然に防ぐようにしてください。

+0

あなたのご意見ありがとうございます!このコード例は完全ではありません。 $ random_unique_saltは、予測できない塩を指します。 – kaulusp

+0

@stacknoobええ、パスワードごとに一意でなければなりません。login関数のパラメータにする必要があります。 – rook

+0

login -methodでもパスワードごとに固有のsaltを生成することは可能ですが、この例ではsaltジェネレータが実装されていないため、__ $ random_unique_salt__をパラメータに追加することは意味があります。 – kaulusp

関連する問題