2009-04-15 1 views
6

私は自分のCakePHPベースのウェブサイト上の特定のアクションに対してのみSSLを有効にしようとしています。私はrequireSecure()を使ってこれを行い、対応するblackHoleCallback()のhttps://urlにリダイレクトします。CakePHPの特定のアクションに対してSSLを選択的に有効にする

サーバーの負荷を低く抑えるには、SSLを必要とする操作が完了したらhttp://whatever_urlにリダイレクトしてください。

どうすればよいですか?

答えて

6

これは私が来た1つの解決策です。私はAppControllerbeforeFilter()に次のコードを追加します。

if (!in_array($this->action, $this->Security->requireSecure) and env('HTTPS')) 
    $this->_unforceSSL(); 

関数は次のように定義されます

function _unforceSSL() { 
    $this->redirect('http://' . $_SERVER['SERVER_NAME'] . $this->here); 
} 
3

セキュアなページのための安全な接続を必要とクッキー、通常のクッキーを使用してくださいセキュアでないページの場合こうすることで、誰かが非セキュアなCookieを取得した場合、機密情報をハイジャックすることはできません。

2

リダイレクトのアプローチで私が気に入らないのは、ユーザーがまだ安全でないURLに行き、その後にリダイレクトされるということです。

私は何かがあなたがSSL /非SSLリンクを渡すものに応じて、返されたと同様のものですHTML->リンク/ URLレベルで行わたかった: http://cakephp.1045679.n5.nabble.com/Re-Login-through-HTTPS-on-CakePHP-td1257438.html だけでなく、安全なコンポーネントに

を使用して私はapp_helperを作成したアプリで :後で編集は、私はちょうど私の仕事は、私は簡単な例を作成しようと、行わなかった(のconfig/core.phpのかbootstrap.phpの中MYAPP_SECURE_URLを定義することを忘れないでください)という簡単に何かをしました。 PHP:

class AppHelper extends Helper { 
    function url($url = null, $full = false) { 
     if($url['action'] == 'login' && $url['controller'] == 'users') { 
      return MYAPP_SECURE_URL.'/users/login'; 
     } 
     return h(Router::url($url, $full)); 
    } 
} 
関連する問題