Как войти в систему аутентификации с сохраненными зашифрованными данными с помощью файла (в основном цифрового сертификата) в laravel 5.1

Я хочу войти в систему с файлом, который содержит цифровой сертификат кого-то, сначала регистрируется с содержимым сертификата в формате base64, и при регистрации он зашифрует содержимое сертификата и сохранит его в базе данных, а при входе в этот файл я хочу войти в систему с что данные совпадают с расшифровкой, пожалуйста, помогите, как это сделать? А также, когда я шифрую каждый раз, когда содержимое файла сохраняется с разными символами, можно ли сохранить 3323 символа в базе данных? пожалуйста, помогите .....

// controller
 $main_file = $request->file;
    //$con = $main_file->getClientOriginalName();
    $con = file_get_contents($main_file->getRealPath());
    $files = Crypt::encrypt($con);
    dd($files);
    $file = Input::file('file')->getClientOriginalName();
    $contents = File::get($main_file);

     dd($contents);

Теперь, чтобы пройти аутентификацию с помощью этих сохраненных зашифрованных данных, каков возможный способ сохранить зашифрованные 3322 символа в базе данных, я действительно застрял. кто-нибудь может мне помочь ... основная задача - войти в систему с содержимым файла ... спасибо ...


person user267019    schedule 14.12.2015    source источник


Ответы (1)


Похоже, вы пытаетесь реализовать какую-то аутентификацию с общим секретным ключом. Неясно, почему вы хотите это сделать (подробнее об этом позже), но с самого начала это звучит как плохая идея, потому что вы сразу же сталкиваетесь со сложной проблемой: как получить конфиденциальную информацию ключ от клиента к серверу безопасным способом?

Лучшим способом сделать это будет система закрытых / открытых ключей, аналогичная той, что делает SSH, когда вы настраиваете вход без пароля. По сути (очень в основном - я не эксперт) идея состоит в том, что клиент генерирует пару закрытого / открытого ключей, а затем отправляет открытый ключ на сервер. При аутентификации закрытый ключ используется для шифрования сообщения. Это зашифрованное сообщение отправляется на сервер, где открытый ключ используется для его расшифровки. Если получено правильное сообщение, то клиент аутентифицирован.

Вместо того, чтобы иметь какой-то общий сертификат, я бы рекомендовал следовать этой модели. Таким образом, вам не придется делиться конфиденциальной информацией (закрытым ключом клиента) с сервером.

В конечном итоге вам нужно подумать, почему вы хотите это сделать.

  1. Вы думаете, это будет удобнее для клиентов? Что ж, для SSH, безусловно, удобнее регистрироваться таким способом, потому что SSH имеет механизм автоматического шифрования и безопасной передачи сообщений. Для HTTP? Не так много. Пользователю нужно будет сгенерировать файл, а затем использовать форму загрузки, чтобы просто войти в систему. Пароли намного быстрее и проще.

  2. Вы думаете, так будет безопаснее? То, как вы его описали (общий закрытый ключ), вероятно, будет менее безопасным, потому что вам каким-то образом нужно передать закрытый ключ от клиента на сервер без его компрометации - помните, если закрытый ключ ключ скомпрометирован, любой может выдать себя за клиента. SSH делает это более безопасно, потому что закрытый ключ никогда не покидает клиента.

В конечном итоге, я думаю, вы, вероятно, сможете получить то, что ищете, если: а) строго соблюдаются правила сложности пароля и б) HTTPS.

Если безопасность на вашем сайте настолько важна, что вы не можете полагаться на HTTPS и сложные пароли, то вам, вероятно, следует искать более комплексное решение, которое будет шифровать весь трафик между клиентом и сервером, например VPN (виртуальная частная сеть). .

person Kryten    schedule 14.12.2015
comment
спасибо за ваши ответы и предложения ... ваш голос за аутентификацию на основе пароля, которая является лучшим способом для системы аутентификации .. я новичок, но не новичок в аутентификации на основе пароля .. спасибо .. @Kryten - person user267019; 15.12.2015