За последние 24 часа нас посетили 21549 программистов и 1066 роботов. Сейчас ищут 842 программиста ...

Хеширование паролей - как лучше и безопаснее это сделать?

Тема в разделе "Подворотня", создана пользователем eldor, 7 дек 2013.

  1. bagirov_saddam

    bagirov_saddam Новичок

    С нами с:
    10 дек 2013
    Сообщения:
    13
    Симпатии:
    0
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Добрый вечер ! Решил изучить пхп встал на одном вопросе уже который день не могу решить что за гонза с пхп ! Задачка найти среднее арифметическое следующего ряда чисел 3,6,9,13,16,19,23,26,29 . Закономерность нашел алгоритм составил все тип топ но вот числа из циклов как бы застривает и не выводит что за ***** ?
    Вот код :
    <?php
    $k=0;
    $s=0;
    for($i=0;$i<=2;$i++)
    for($j=1;$j<=9;$j++)
    if($j%3==0) {

    $j+=$i*10;

    $k++;
    $s+=$j;
    }


    echo "<br/> <b>Среднее арифметическое = </b>",$s/$k;
    ?>
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Какой милый срач:) Сурикат тешится.

    Мне одному кажется, что волноваться о том, что будет с проектом после того, как тебе слили БД и исходники, это все равно что начать считать содержание минералов и примесей в бутилированной воде, когда у тебя почки уже разложились? Да каждого из вас уже могут обсчитывать. Защищаться надо в первую очередь от того, ято к вам пытаются пролезть. А все остальное...вроде как должно дать вам время, чтобы предупредить пользователей, или еще мало ли что. Но с какого момента начинать отсчет времени?

    Лакомка:) Грузануть собственный сервак на секунду.
    Бинго! Здравая мысль, но не законченная...
    Бро, правда думаешь, что в интернете обитают только люди? О_о
    Отлично - "я готов засрать собственный сервак, потому что верю, что никогда звезды так не сложатся, что это выйдет мне боком." Авось пронесет. Авось никто не соберет бота, натравленного на твой проект. Авось никто не поднимет на тебя ботнет. Авось внезапно у тебя не начнет регаться по 400 акков в секунду.

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

    Хакер тоже программист. Он тоже очень ленив, чтобы что-то там делать руками, тратить время, напрягать железо, когда можно просто залить вам снифер.

    Это как "Что делать, чтобы не заболеть ЗППП от инфицированной девушки, если занимаешься с ней сексом без презерватива?". Ответ: "либо вовсе не заниматься с ней сексом, либо использовать презерватив." Повторный вопрос "Не, ну вот а если...". Ответ: "Ну а если, то вам бы, чисто гипотетически, к венерологу и под капельницу с антибиотиками, батенька, доигрались".

    Не надо придумывать себе проблемы. Хотите защиты кода? Несколько раз в день проверяйте хэш ваших файлов на машине, не связанной с сервером. Не готовы так загоняться? Тогда выключайте паранойю, и смотрите на вещи реально. Проблемы не там, где вы пытаетесь их решить.
     
  3. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    получается любой школьник может положить сервак, простейшим ботом. это не есть гуд.

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

    нужно не надеяться на авось, а разрабатывать адекватные решения, способные работать в РЕАЛЬНЫХ условиях. этим и отличается мышление теоретиков и практиков, в этой теме, и вообще в жизни.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Парни, тема давно исчерпалась. Всё интересное уже сказано, поэтому предлагаю остановиться.
    Пытаясь уязвить собеседника, еще неизвестно кого сильнее дискредитируешь, себя или его. Peace!
     
  5. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    > получается любой школьник может положить сервак, простейшим ботом. это не есть гуд.

    Если вы о защите от ботов не думали изначально - я вам его положу и без каких-то crypt, ей богу. Думаете ваш скрипт, который грузит базу и исполняется 0.350 чем-то отличается от crypt который исполняется столько же?

    > генерить словари для каждого соленого хеша никто в здравом уме не будет. сгенерят и сломают только хеши ключевых пользователей.

    У ключевых пользователей и пароли посложнее должны быть, да? А значит - могут и не увести. И потом, самая классическая схема - расшифровка всей базы, пробивка ее пар "почта/пароль" по популярным социалкам, спам. А сервису - репутационные потери. И не нужно говорить про "простые проекты новичков" и т.п. - он потом пойдет в сложные проекты так ничему и не научившись. Вот эти сервисы https://wiki.php.net/rfc/password_hash#recent_attacks не новички делали.

    >нужно не надеяться на авось, а разрабатывать адекватные решения, способные работать в РЕАЛЬНЫХ условиях. этим и отличается мышление теоретиков и практиков, в этой теме, и вообще в жизни

    Идеальные слова. Угу. Берем реальные практические наработки всего мирового комьюнити в этой области, осознаем "как и зачем" и применяем. А не выдумываем какие-то свои костыли, об которые набил шишки не один сервис, от "домашних", до крупных.
     
  6. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    мой скрипт - 0.35, crypt - 0,35 ... вот почти секунда ответа и получилась. и это на пустом месте. для меня лично это неприемлемо.

    оптять таки - ДОЛЖНЫ, в теории) а на практике - это обычные люди, но с расширенными правами в системе. и запоминать длинные и сложные пароли они ой как не любят. как им не объясняй. и в итоге лежит там очередные даты рождения и клички животных...
     
  7. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    > мой скрипт - 0.35, crypt - 0,35 ... вот почти секунда ответа и получилась. и это на пустом месте. для меня лично это неприемлемо.

    Снижайте затраты на скрипт (ибо это странно, что авторизационная страница ест столько же, сколько регулярная), снижайте затраты за crypt, если вы готовы аргументированно хотя бы себе доказать, почему "неприемлемо". Пока же все это выглядит так, что вы просто пытаетесь высосать из пальца какие-то аргументы. Когда будете работать с проектами "5 авторизаций в секунду", тогда и будете тут цифрами играться.

    > птять таки - ДОЛЖНЫ, в теории) а на практике - это обычные люди, но с расширенными правами в системе. и запоминать длинные и сложные пароли они ой как не любят. как им не объясняй. и в итоге лежит там очередные даты рождения и клички животных.

    Это ваша задача, как разработчика - решить, что с этим делать. Вариантов достаточно - от усиления в целом крипта до проверки на сложность и словарность пароля. Ну и вообще, правда, хватит детский сад уже. "Если захотят угнать машину - угонят, зачем ее запирать", "Если захотят влезть в квартиру - влезут, зачем замок на двери", "Если захотят подобрать пароль - подберут, зачем мне какой-то crypt, я md5 по старинке".
     
  8. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Делал года 3 назад, развлекухи для "stickynotes" (баловство и тыкание пальцем всяких новых на тот момент для меня штук), суть была в чем:
    юзер при входе сохранял в настройках ключ (сохранявшийся в localStorage), после чего все пересылаемые данные шифровались с этим ключем.

    После чего решил что если хочется секурности, шоп прям безопасность и шифрованость, то нету лучше способа и проще, чем openSSL, но стало уже не интересно :)

    З.Ы. но это ужо полный оффтоп - относительно хэширования )
     
  9. bagirov_saddam

    bagirov_saddam Новичок

    С нами с:
    10 дек 2013
    Сообщения:
    13
    Симпатии:
    0
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    <?php
    $x = array("один","два","три");
    $s = array("один" => 1,"два" => 2,"три" => 3);
    $j = 0;
    while ($j < 100){
    $r[]= ($j * $s[$x[$j % 3]]);
    j++;
    }
    print_r($r);
    вот два одинаковых кода найдите разницу заранее спасибо
    $x = array("один","два","три");
    $s = array("один" => 1, "два" => 2, "три" => 3);
    $j = 0;
    while ($j < 100) {
    $r[]= ($j * $s[$x[$j % 3]]);
    $j++;
    }
    print_r ($r);
    ?>
     
  10. Roma_SP

    Roma_SP Новичок

    С нами с:
    11 сен 2013
    Сообщения:
    89
    Симпатии:
    0
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Можно смешать соль и хешировать через md5 а потом через sha1 к примеру...Понимаю что это изящренно, но все таки.
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    больше чем md5 не выйдет.
     
  12. bagirov_saddam

    bagirov_saddam Новичок

    С нами с:
    10 дек 2013
    Сообщения:
    13
    Симпатии:
    0
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    вот чуть переделал но все равно ошибка
    <?php
    if (isset($_POST["calc"])) {
    function add($x,$y) {
    return $x + $y;
    }
    $n_1 = $_POST["n_1"];
    $n_2 = $_POST["n_2"];
    if((is_integer($n_1))&&(is_integer($n_2)))
    {
    $result = add($n_1,$n_2);
    }
    else
    {
    $result = "Некорректный ввод ";о
    }
    ?>
    <html>
    <head>
    <title> Форма</title>
    </head>
    <body>
    <?php
    if(isset($result)) echo "<p>Вычисление: $result</p>";
    ?>
    <form name="myform" action = "index.php" method = "post">
    <p>
    <input type = "text" name = "n_1" />
    <input type = "text" name = "n_2" />
    <br />
    <input type = "submit" name = "calc" value = "Вычислить" />
    </p>
    </form>
    </body>
    </html>
    is_integer в случае если введенные данные числовые целые выполняет функцию иначе возвращает что данные некорректны
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    О чем эта тема?
     
  14. bagirov_saddam

    bagirov_saddam Новичок

    С нами с:
    10 дек 2013
    Сообщения:
    13
    Симпатии:
    0
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    вот чуть переделал но все равно ошибка
    <?php
    if (isset($_POST["calc"])) {
    function add($x,$y) {
    return $x + $y;
    }
    $n_1 = $_POST["n_1"];
    $n_2 = $_POST["n_2"];
    if((is_integer($n_1))&&(is_integer($n_2)))
    {
    $result = add($n_1,$n_2);
    }
    else
    {
    $result = "Некорректный ввод ";о
    }
    ?>
    <html>
    <head>
    <title> Форма</title>
    </head>
    <body>
    <?php
    if(isset($result)) echo "<p>Вычисление: $result</p>";
    ?>
    <form name="myform" action = "index.php" method = "post">
    <p>
    <input type = "text" name = "n_1" />
    <input type = "text" name = "n_2" />
    <br />
    <input type = "submit" name = "calc" value = "Вычислить" />
    </p>
    </form>
    </body>
    </html>
    is_integer в случае если введенные данные числовые целые выполняет функцию иначе возвращает что данные некорректны

    Добавлено спустя 2 минуты 1 секунду:
    Re: Хеширование паролей - как лучше и безопаснее это сделать?
    Создате форму с двумя тестовыми полями Метки Число 1 и Число 2 На этой же странице примите данные из формы Проверьте данные на корректность чтобы они были именно числами а не например строками Выведите сумму чисел если полученные значения корректны или сообщение об ошибке если они некорректны примечание для проверки того была ли отправлена форма вам потребуется функция isset
     
  15. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Подниму-ка я тему, ибо появился доп.вопрос.

    Есть алгоритм шифрования пароля: $hash = md5('******' . '7b6b02ea2387f9f5');
    Пароль (звёздочки, 8 символов) это случайный(!) набор символов в диапазоне [0-9a-zA-Z]. (т.е. словари бесполезны, я так понимаю).

    Вопрос: Сколько потребуется времени на обработку одного хеша (в среднем)?

    Например: Есть хеш "8e195f7f0f159f412c59336fc446c2f1" и алгоритм (выше).
    Если есть возможность и не лень, проведите эксперимент. Если получится, напишите здесь о результате (пароль + затраченное время).

    п.с. Очень хочется знать, - если стырят базу с 1 млн. таких паролей и сам алгоритм, то сколько нужно времени, чтобы получить все пароли.