2012-08-28 25 views
6

हाय मैं एक साधारण html लॉगिन प्रपत्रकोडनिर्देशक: नियंत्रक को फ़ॉर्म जमा करने से पहले मैं पासवर्ड कैसे एन्क्रिप्ट कर सकता हूं?

<form method="post" action="http://www.mysite.com/login"> 

<input type="text" name="text_box" /> 
<input type="password" name="pass_word" /> 
<input type="submit" name="submit"> 

</form> 

है जब मैं प्रपत्र

सबमिट करें और नियंत्रक

public function login(){ 

$pass_word = $this->input->post('pass_word'); 
die($pass_word); 

} 

समस्या यहाँ में, यह स्पष्ट पासवर्ड पता चलता है। अगर मैं नियंत्रक में 123456 टाइप करता हूं, तो मुझे 123456 मिलता है।

  1. इस एक सुरक्षा मुद्दा
  2. किसी भी एक wireshark की तरह एक नेटवर्क निगरानी उपकरण के माध्यम से अपना पासवर्ड मिल सकता है।

इससे कैसे बचें। क्या मैं नियंत्रक को भेजने से पहले पासवर्ड को एन्क्रिप्ट कर सकता हूं, कृपया मदद करें, अग्रिम धन्यवाद।

+3

http://en.wikipedia.org/wiki/Transport_Layer_Security – ManseUK

+1

कि JavaScript का उपयोग .. आप एक साधारण एमडी 5 एन्क्रिप्शन स्क्रिप्ट गूगल कर सकते हैं। सबमिट सबमिट पर पासवर्ड को एन्कोड करें। – Vishal

+0

@vishal, अगर मैं पासवर्ड एन्क्रिप्ट करता हूं तो आप जेएस देख सकते हैं और जांच सकते हैं कि मैंने एन्क्रिप्शन करने के लिए किस विधि का उपयोग किया है, और मुझे लगता है कि आप इसे –

उत्तर

11

यदि आपकी पोस्ट डेटा (पासवर्ड आदि) को रोका गया था, तो यह सिर्फ सादा पाठ के रूप में दिखाई होगा। SSL/HTTPS का उपयोग करने से आपके द्वारा भेजे जाने वाले डेटा के लिए एन्क्रिप्शन प्रदान किया जाएगा। मैं क्लाइंट-साइड जावास्क्रिप्ट या किसी उपयोगकर्ता में प्रमाणीकरण/लॉगिंग के प्रयोजनों के लिए समान कुछ भी नहीं निर्भर करता। यह आपके उपयोगकर्ताओं को अधिक आत्मविश्वास देने की संभावना है, यह देखते हुए कि एक सुरक्षित कनेक्शन का उपयोग किया जा रहा है।

सबसे पहले, मैं सामान्य रूप से एसएसएल और एचटीटीपीएस के बारे में पढ़ता हूं, साथ ही एसएसएल प्रमाणपत्र - विकी, Google और एसओ सभी अच्छे स्थान देखने के लिए होंगे, वहां बहुत सारी जानकारी है।

: Nigel's post से

विशेष रूप से बल ssl समारोह:

सीआई के साथ SSL/HTTPS का उपयोग कर के लिए, मैं इन उपयोगी पाया

ssl_helper.php

if (!function_exists('force_ssl')) 
{ 
    function force_ssl() 
    { 
     $CI =& get_instance(); 
     $CI->config->config['base_url'] = 
       str_replace('http://', 'https://', 
       $CI->config->config['base_url']); 
     if ($_SERVER['SERVER_PORT'] != 443) 
     { 
      redirect($CI->uri->uri_string()); 
     } 
    } 
} 

function remove_ssl() 
{ 
    $CI =& get_instance(); 
    $CI->config->config['base_url'] = 
        str_replace('https://', 'http://', 
        $CI->config->config['base_url']); 
    if ($_SERVER['SERVER_PORT'] != 80) 
    { 
     redirect($CI->uri->uri_string()); 
    } 
} 

लोड सहायक बुलाया आवेदन/सहायक में एक फ़ाइल बनाएं, फिर किसी भी नियंत्रक कि ssl की आवश्यकता के लिए निर्माता में, बस सम्मिलित करें:

force_ssl();

प्रत्येक नियंत्रक में जो आप एसएसएल रखना नहीं चाहते हैं:

if (function_exists('force_ssl')) remove_ssl();

यह एक कार्यक्रम संबंधी दृष्टिकोण है, एक और तरीका है (यदि आप अपाचे का उपयोग कर रहे हैं) .htaccess उपयोग करने के लिए किया जाएगा।

0

http://codeigniter.com/user_guide/libraries/encryption.html के माध्यम से जाएं। एन्क्रिप्शन और डिक्रिप्शन के बारे में सबकुछ यहां वर्णित है।

डेटा एन्क्रिप्शन करता है और इसे एक स्ट्रिंग के रूप में देता है। उदाहरण:

$pass_word = $this->encrypt->encode(input->post('pass_word')); 

एन्कोडेड स्ट्रिंग को डिक्रिप्ट करता है। उदाहरण:

$encrypted_pass_word = 'APANtByIGI1BpVXZTJgcsAG8GZl8pdwwa84'; 

$plaintext_pass_word = $this->encrypt->decode($encrypted_pass_word); 

आप वैकल्पिक रूप से आप अपने कॉन्फ़िग फ़ाइल में से एक का उपयोग नहीं करना चाहते हैं, तो दूसरा पैरामीटर के माध्यम से अपने एन्क्रिप्शन कुंजी पारित कर सकते हैं। इसके बारे में विस्तार स्पष्टीकरण पढ़ने के लिए लिंक के माध्यम से जाएं।

+0

हाँ, मैं नियंत्रक में एन्क्रिप्शन कर सकता हूं, समस्या यह है कि कोई पोस्ट अनुरोध के बीच में पासवर्ड प्राप्त कर सकता है ????? –

+1

एसएसएल इसका एकमात्र उत्तर है। बाकी सब कुछ आपके जावास्क्रिप्ट को देखकर स्नूप किया जा सकता है या बस किया जा सकता है। एसएसएल इसके लिए डिज़ाइन किया गया है; यदि आप इस सवाल से पूछ रहे हैं तो आपको निश्चित रूप से बेहतर समाधान के साथ आने की कोशिश नहीं करनी चाहिए! –

+0

पासवर्ड – user4419336

2

हां, यह निश्चित रूप से एक सुरक्षा समस्या है। जैसा कि आप कहते हैं, Wireshark (या इसी तरह) के साथ किसी को भी इसे रोकने की क्षमता है।

शायद यह ऐसा कुछ नहीं है जिसे आप जावास्क्रिप्ट पर भरोसा करना चाहते हैं। आम तौर पर आप एसएसएल/एचटीटीपीएस जैसे कुछ का उपयोग करेंगे, एक ब्लॉग पोस्ट (थोड़ा पुराना) है जो कोडइग्निटर के साथ इसके बारे में जानकारी देने के बारे में बताता है, हालांकि यह बहुत आम है, इसलिए आप कुछ गुगलिंग के साथ एक और हालिया ट्यूटोरियल ढूंढ पाएंगे।

http://sajjadhossain.com/2008/10/27/ssl-https-urls-and-codeigniter/ http://nigel.mcbryde.com.au/2009/03/working-with-ssl-in-codeigniter/।

अद्यतन: Lefter के जवाब और अधिक विस्तार प्रदान करता है और सही है, इसे देखने के लिए कृपया रूप में अच्छी तरह/बजाय

1
$password = sha1($this->input->post('password')); 

or 

$hash= $this->input->post('password'); 

$password= $this->encrypt->sha1($hash); 

आप md5 बजाय SHA1 लेकिन SHA1 का उपयोग अधिक है सुरक्षित तो md5 ... और दोनों md5 & SHA1 कर सकते हैं हैं गैर decodable

0

उपयोगकर्ता https के लिए एक और आसान तरीका है।

मैं ./application/config/config.php फ़ाइल में निम्न लाइनें डाल और यह पूरी तरह से काम करता है:

$protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http'; 
$config['base_url'] = $protocol.'://www.yoursite.com'; 
+0

के लिए कोडनिर्देशक एन्क्रिप्ट का उपयोग न करें यह बहुत आसान और सरल प्रक्रिया हो सकती है। –