2009-04-15 16 views
6

में कुछ कार्रवाइयों के लिए एसएसएल को चुनिंदा रूप से सक्षम करना मैं अपने केकेपीएचपी आधारित वेबसाइट पर केवल कुछ कार्यों के लिए एसएसएल सक्षम करने की कोशिश कर रहा हूं। मैं requecure() की आवश्यकता के साथ ऐसा कर रहा हूं और संबंधित BlackHoleCallback() में https://url पर रीडायरेक्ट कर रहा हूं।केकपीएचपी

सर्वर को लोड करने के लिए, मैं एसएसएल की आवश्यकता वाले कार्रवाई के साथ http://whatever_url पर रीडायरेक्ट करना चाहता हूं।

मैं यह कैसे कर सकता हूं?

उत्तर

6

तो यह एक समाधान है जिस पर मैं आया हूं। मैं AppController में beforeFilter() के लिए निम्न स्निपेट शामिल:

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

समारोह के रूप में परिभाषित किया गया है:

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

उस कुकी का सुरक्षित पृष्ठों को एक सुरक्षित कनेक्शन की आवश्यकता है, और एक सामान्य कुकी उपयोग करना सुनिश्चित करें गैर सुरक्षित पृष्ठों के लिए। इस तरह, अगर कोई गैर सुरक्षित कुकी को कैप्चर करता है, तो वे किसी भी संवेदनशील जानकारी को हाइजैक नहीं कर पाएंगे।

2

जो मुझे रीडायरेक्ट दृष्टिकोण से पसंद नहीं है वह यह है कि उपयोगकर्ता अभी भी असुरक्षित यूआरएल पर जाता है और इसके बाद ही उसे रीडायरेक्ट किया जाता है।

मैं चाहता था कुछ html-> लिंक/यूआरएल स्तर पर जहां क्या आप एक SSL/गैर- SSL लिंक पारित पर निर्भर करता है पर किया लौटा दिया जाता है, के साथ कुछ इसी तरह: http://cakephp.1045679.n5.nabble.com/Re-Login-through-HTTPS-on-CakePHP-td1257438.html लेकिन यह भी सुरक्षित घटक

का उपयोग कर बाद में संपादित करें, मैंने कुछ आसान किया है कि मैंने अपना काम किया है, मैं एक सरल उदाहरण बनाने की कोशिश करता हूं (MYAPP_SECURE_URL को config/core.php या bootstrap.php में परिभाषित करना न भूलें): ऐप में मैंने app_helper बनाया है। 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)); 
    } 
} 
संबंधित मुद्दे