aaadddminnn
@aaadddminnn
php it ubuntu debian

Безопасно ли я отправляю пароли на сервер?

Привет. Суть в том что проект без бюджета вообще (я себе и тимлид и дизайнер и программист, а ещё немножко художник :) ) по этому покупать сертефикат ssl не позволяет бюджет) Использую обычный http 1.0.
Отправка пароля проходит так:
Клиентская часть :
Получаем пароль из инпута потом сразу создаём хеш sha512
Потом аяксом шлю хеш пароля и логин.
На стороне сервера делаю примерно так
$data->post_gson('data');
$json = $data->result();
$login    = $json->login;
$password = $json->pass;

$pass = new pass;
$salt = $pass->salt();
$data = $password.$login.$salt.$password;
$password = $pass->sha512($data);
$password = $pass->gost($password);
$password = $pass->joaat($password);
$password = $pass->ripemd320($password);
$password = $pass->tiger192_4($password);
$password = $pass->whirlpool($password);
$password = $pass->crc32b($password);

Тут собственно я получаю json декодирую его и разбиваю инфу по переменным $login и $password
Потом генерирую соль с 30 символов
Доступные символы
qazxswedcvfrtgbnhyujmkiolp%^*()_+-=/\][{}1234567$890QAZXSWEDCVFRTGBNHYUJMKIOLP

И уже солю хеш и делаю с него хеш другого вида :) (если перехватят хеш пароля все равно не так плохо как открытый пароль, а если сольют базу то будут очень долго мучатся пока с паролями)
Потом при авторизации я думаю делать тройной хеш строки login,id,date_reg,HTTP_USER_AGENT
потом этот хеш заверну в xxtea, а уже то что выйдет закодирую анубисом, обверну в базе64 и запишу куку.
Что в моём решении бред, а что нет?
  • Вопрос задан
  • 1053 просмотра
Решения вопроса 4
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Запутать != защитить...
cram-MD5
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А в чём разница, перехватить открытый пароль или его хэш? Всё равно можно то же самое послать серверу снова.
Если уж хочется поизвращаться - для каждого входа на сервере генерите пару ключей RSA, пересылаете публичный клиенту, он шифрует пароль этим ключом, сервер расшифровывает его приватным ключом. При следующем входе генерируется новая пара и т.д. Правда всё равно остаётся уязвимость MitM, но от неё вообще мало что спасает.
Ответ написан
Jump
@Jump
Системный администратор со стажем.
А зачем пересылать хэш? Это излишнее нагромождение не добавляющее безопасности.
Пересылайте пароль, по HTTPS и не городите огород.
А солить пароль на сервере это правильно.
Ответ написан
Комментировать
aaadddminnn
@aaadddminnn Автор вопроса
php it ubuntu debian
А что если я буду аяксом получать соль1 солить в скрипте и слать солёный хеш (на стороне сервера соль сохранив в сесию) и потом уже ещё раз солить хеш? Вот как я сделал на аяксе
function pass_hash() {
      $.ajax({
    type: "POST",
    url: "/api/?alg=reg&action=save_salt",
    traditional: true,
    success: function(resp) {
    var yyyy = hex_sha512($("#pass").val());
    var pass = hex_sha512(resp+yyyy+$("#login"));
    var data =  JSON.stringify({login: $("#login").val(),pass: pass });
    
    $.post('/api/?alg=reg&action=save', { data: data }, 
    function(response) {
      alert (pass);
    });       
    },
    error: function(resp) {
      alert('error');
    }
  });    

  }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@karminski
Senior React.JS Developer
Уважаемый, я вам секрет открою. Вам не нужен бюджет для SSL-сертификата.
https://letsencrypt.org/

Все остальные ваши мытарства - простая трата времени.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы