Привет, у меня простая форма входа в 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
.
как этого избежать. я могу зашифровать пароль, прежде чем отправлять его на контроллер, пожалуйста, помогите, спасибо заранее.
Если ваши данные для сообщений (пароль и т. Д.) Были перехвачены, тогда это будет просто видно как открытый текст. Использование SSL / HTTPS обеспечит шифрование данных, которые вы отправляете. Я бы не стал полагаться на клиентский JavaScript или что-то подобное для целей аутентификации / регистрации пользователя. Это, скорее всего, также даст вашим пользователям больше уверенности в том, что используется безопасное соединение.
Во-первых, я только что прочитал о SSL и HTTPS в целом, а также сертификаты SSL – Wiki, Google и SO – все это будет хорошим местом для поиска, там много информации.
Для использования SSL / HTTPS с CI я нашел это полезным:
В частности, силовая функция ssl от должности Найджела :
Создайте файл в приложении / помощнике 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();
В каждом контроллере, который вы не хотите использовать ssl:
if (function_exists('force_ssl')) remove_ssl();
Это программный подход, другим способом было бы использовать .htaccess (если вы используете Apache).
Да, это определенно проблема безопасности. Как вы говорите, любой, у кого есть Wireshark (или аналогичный), может перехватить его.
Вероятно, это не то, на что вы хотите положиться на JavaScript. Как правило, вы используете что-то вроде SSL / HTTPS, есть сообщение в блоге (немного старое), в котором подробно описывается, как это сделать с помощью CodeIgniter, однако это довольно распространено, поэтому вы можете найти более недавний учебник с небольшим количеством Googling.
http://sajjadhossain.com/2008/10/27/ssl-https-urls-and-codeigniter/ http://nigel.mcbryde.com.au/2009/03/working-with-ssl-in-codeigniter/ ,
ОБНОВЛЕНИЕ: ответ Лефтера дает более подробную информацию и является правильным, пожалуйста, просмотрите его, а также / вместо этого
$password = sha1($this->input->post('password')); or $hash= $this->input->post('password'); $password= $this->encrypt->sha1($hash);
вы можете использовать md5 вместо sha1, но sha1 более безопасен, чем md5 … и оба md5 и sha1 не декодируются
Перейдите по 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);
Вы можете дополнительно передать свой ключ шифрования по второму параметру, если вы не хотите использовать его в своем конфигурационном файле. Перейдите по ссылке, чтобы прочитать подробное объяснение.
Существует более простой способ для пользователя https.
Я помещаю следующие строки в файл ./application/config/config.php, и он отлично работает:
$protocol = ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ) ? 'https' : 'http'; $config['base_url'] = $protocol.'://www.yoursite.com';