В этой статье я решил выложить свое представление о авторизации на сайте при помощи PHP.
Конечно если авторизация происходит на SSL риски того, что пароль будет перехвачен при помощи снифера становятся ничтожными. Но все же, такой вид авторизации не везде используется. Один из видов защиты — это содержание пароля в виде хеша. Но ведь при авторизации пароль оправляется в POST запросе на сервер и существует шанс его выловить. Поразмыслив, я решил попробовать реализовать схему авторизации при которой пароль не будет отправляться на сервер в том виде в котором он есть. И даже не его MD5 хеш. В планах было что то подобное алгоритму ms-chap.

А именно:

1) При посещении сайта неавторизированному пользователю в куке выдается уникальный id.
2) Если пользователь решил авторизоваться, при заполнении пароля генерируется хеш на базе md5 хеша его пароля и выданного ему со стороны сервера id.
3) После попытки авторизации, вне зависимости от ее итогов, id перезаписывается.

Что мы получаем в итоге? При каждой попытке авторизации генерируется новый хеш отличный от предыдущего и вылавливать его смысла нету.

Итак приступим:

Так как статья не подразумевала готового кода а больше ориентировалась на алгоритм и логику, указаны только те басовые моменты на которых основывается реализация данной логики. Суть тут больше в алгоритме а окружение каждый строит по своему.

Итак в корне сайта пользователю присваивается «соль» которая генерируется в самом начале, а так же после каждой попытки авторизации.

session_start();
//Присваиваем значение уникальный id если отсутствует
if(!isset($_SESSION['uniq'])||$_SESSION['uniq']=='')
{
$_SESSION['uniq']=uniqid();
}
?>


Далее в форме логина:


<form action="" method="post">
//поле ввода логина
        <input type="email"  placeholder="E-mail" name="login">
//поле для ввода пароля
        <input id="pass" type="password"  placeholder="Пароль" >
//скрытое поле в котором генерируется хеш пароля
        <input id="hidpass" type="hidden" name="password" value="" >
//кнопка ввода
        <button type="submit" >Войти</button>
 </form>

//Функция генерации хеша
<script>
  $(function () {
   $("#pass").on("input",function(e){ 
//При вводе данных в поле пароля автоматически происходит кодирование их в MD5 добавляется уникальный id и еще раз кодируется после чего присваивается к скрытому полю для дальнейшей отправки
        var pass=CryptoJS.MD5($('#pass').val())+'<?php echo $_SESSION['uniq']?>';
        var md5pass=CryptoJS.MD5(pass);
        $('#hidpass').val(md5pass.toString());
    });
  });
</script>

Как получаем постоянно меняющийся пароль, разобрались, осталось разобраться что с ним делать.

После отправки формы мы попадаем в функцию проверки логина и пароля. Тут тоже на вкус и цвет фломастеры разные. В моем случае вместо формы вызывается функция авторизации после итогов которой страница просто обновляется и если авторизация была успешной то мы попадаем в наше рабочее пространство. Если же итог неудачный, то мы снова глядим на форму входа.

function CheckLogin($login,$md5pass)
    {
    //Получаем пароль из базы данных 
       $pass="MD5 пароль из базы данных" ;  
    //Прибавляем к ней уникальный id полученный в индексе при посещении 
        $pass.=$_SESSION['uniq'];
    //Получаем хеш этой гремучей смеси
        $pass=md5($pass);
   //Удаляем уникальный id чтоб в следующий раз пароли опять получились новые 
        unset($_SESSION['uniq']);
   //Ну и сравниваем хеш
        if(strcmp($md5pass,$pass)==0)
        {
            echo "Авторизация прошла успешно. Если вы не переместились на страницу обновите ее";
            $_SESSION['id']=session_id();
        }
//Обновляем страницу удобным нам способом
       .......
    }


UPD: Статья предполагала не сам код, а алгоритм реализацию которого каждый видит по своему. А не для развода холивара на тему «скопировал образовалась дырка и вообще нифига не пашет» и скобки криво стоят. Но так как все комментарии уперлись именно в это пришлось убрать кот который был примитивным и подразумевал действия на не инструкции.
Поделиться с друзьями
-->

Комментарии (113)


  1. Iqorek
    29.07.2017 23:00
    +9

    Такая защита немного усложнит жизнь взломщикам, но против man-in-the-middle она абсолютно уязвима. SSL кроме шифрования, не дает «человеку в середине» подменить ответ сервера, тут же даже не надо ничего ломать, вам заинжектят скрипт, который повесится на ваш $("#pass").on(«input») и отошлет ваш пароль куда надо в самом наилучшем виде. Кроме SSL у вас в браузере нет никакой другой опции узнать, что то что ушло с сервера пришло к вам без изменений.


    1. RomanPogosyan
      30.07.2017 00:11
      -5

      Да в принципе ничего не мешает работать в VPN, туда вообще вломиться очень сложно. хотя никто не отменял кражу пароля трояном.


  1. zenn
    29.07.2017 23:05
    +12

    Идея, конечно, может быть и имеет смысл (шифровать пароль еще на клиенте) с какой либо солью, но вот качество излагаемого вами кода… Это нечто. Давайте взглянем поближе, самый шедевральный момент:

    $db->CheckLogin($_POST['login'],$_POST['password']);
    // ...
    function CheckLogin($login,$md5pass)
    {
         $STH=$this->db->query("select password from users where email='$login'");
    }
    

    и вы еще беспокоитесь о MITM? Как можно использовать PHP::PDO, но игнорировать preparedStatement? А что будет, если юзер в $_POST['login'] забьет нечто подобное:
    script.php?login=0'+union+drop+table+users+--+

    Ну и далее:
    strcmp($md5pass,$pass)==0
    

    почему сравнение используете без типа? Вроде как strcmp может вернуть -1 0 1 и только… Вы ожидаете false и '0'?
    А что происходит тут? Зачем вы подключили целую jquery?
    //Обновляем страницу
            echo "<script src="js/jquery.min.js"></script>";
            echo " <script>
                $( document ).ready(function() {
                location.reload();
                });
            </script> ";
    

    window.location.reload() вызывается без всяких там $(document).ready(), это вполне себе стандартная javascript фу-ия еще со времен царя гороха… Да и вообще, если вы уже пишите обработчик на php, то почему не используете header(«Refresh:0»);…
    И таких огрехов по коду достаточно. Вам следовало бы подготовится немного получше, перед публикацией подобной статьи, хабр все же не gist.github.com…


    1. RomanPogosyan
      30.07.2017 00:05
      -10

      Отвечу от конца к началу:
      header(«Refresh:0»); ответит невозможностью модификации.
      ну с jQuery может и переборщил.
      Получение пароля из базы примитивно для наглядности как и весь код. Я согласен с вами, тут не github, в статье представлена логика с примитивной реализацией.


  1. riot26
    29.07.2017 23:13
    +13

    image


  1. gudvinr
    29.07.2017 23:18
    +3

    Схема аутентификации без отправки пароля может быть реализована с помощью стандартных протоколов, например, посредством SRP.
    Да, нативной поддержки браузерами нет, однако есть некоторое число библиотек для JS.


  1. AlexLeonov
    30.07.2017 00:14
    -2

    if(!isset($_SESSION['uniq'])||$_SESSION['uniq']=='')
    $_SESSION['uniq']=uniqid();
    


    Нет фигурных скобок. Минус балл.

    require_once('engine.php');
    

    Использование относительного пути — минус балл. Неиспользование composer — еще минус балл.

    У вас уже «двойка», продолжаем.

    $engine = new Template("tpl/");
    

    Еще один относительный путь. Не говоря уж о том, что папка, где находятся шаблоны — не зависимость для шаблонизатора. Впрочем, вряд ли вы вообще понимаете слово «зависимость».

    require_once('libs/mysql.php');
    

    Господи, можно я не видел этого?

    $db=new Database_Module();
    ...
    $db->CheckLogin();
    


    Полное наплевательство на стандарты стиля кода. Еще минус балл. У вас уже «кол».

    function CheckLogin();
    ...
    $STH=...
    


    Ноль.

    echo "<script src="js/jquery.min.js"></script>";
    

    Вы это вообще серьезно?

    P.S. Как там дела, в 2001 году?


    1. RomanPogosyan
      30.07.2017 00:29
      -5

      На счет фигурных скобок. Они не обязательны, если после логики только одно действие


      1. zelenin
        30.07.2017 02:32
        +7

        по psr обязательны.


        1. serginhold
          30.07.2017 12:48
          +2

          Код конечно тот ещё, но фанатики psr прям выбешивают иногда, psr это не стандарты, это рекомендованные стандарты, в которых куча нелогичных вариаций в похожих конструкциях, например тот же идиотизм скобок

          class A
          {
          }
          

          if (true) {
          }
          

          вот эту клоунаду я никогда не пойму


          1. AlexLeonov
            30.07.2017 14:29
            +1

            А что тут непонятного?

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

            После условия в if уже ничего не может быть, кроме фигурной скобки. Поэтому пишем ее на той же строке, чтобы случайно ничего не написать между условием и "}".

            Всё логично.


            1. NLO
              30.07.2017 14:51

              НЛО прилетело и опубликовало эту надпись здесь


              1. AlexLeonov
                30.07.2017 14:57
                -2

                После условия в if может быть и одно выражение на той же строке.

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

                Зачем вообще обсуждать скобки и пробелы? Не нравится подход PSR — не пишите на PHP публичный код, делайте свои домашние странички, где никто вас не упрекнёт за отсутствие скобок. Хотите выкладывать свой код в паблик — будьте любезны соблюдать публичные стандарты.

                Вам не кажется такой подход логичным?


                1. NLO
                  30.07.2017 15:07

                  НЛО прилетело и опубликовало эту надпись здесь


                  1. alexey-m-ukolov
                    30.07.2017 15:13

                    Проблема в том, что этот бред по каким-то причинам стал стандартом. Общепринятые — значит, что с ним согласны больше 50% программистов? Но что если больше 50% программистов — говнокодеры?
                    Эти стандарты принимала довольно большая группа компетентных разработчиков, пишущих фреймворки и библиотеки.


                    1. NLO
                      30.07.2017 15:33

                      НЛО прилетело и опубликовало эту надпись здесь


                1. serginhold
                  30.07.2017 15:11
                  +2

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

                  северокорейская компания?
                  все погибнут от:
                  if ($flag)
                      throw new Exception();
                  

                  ?


                  1. alexey-m-ukolov
                    30.07.2017 15:14
                    -2

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


                  1. dopusteam
                    30.07.2017 17:13
                    +5

                    Не холивара ради, но код без скобок больше подвержен ошибкам при изменении. Надо всегда держать в голове "если там одно действие, то добавить скобки".
                    В моей практике было несколько случаев, когда при изменении кода, забывали добавить скобки. Отловить ошибку иногда бывает очень сложно.
                    Главный императив разработки ПО — управление сложностью. Я думаю, что в эту сложность можно вкладывать и сложность поддержки. Чем меньше лишних условий, не относящихся к цели модифицирования кода, требуется учесть, тем лучше. Если я меняю ветку if, я не хочу усложнять себе задачу, проверяя наличие скобок.


              1. alexey-m-ukolov
                30.07.2017 15:10
                -1

                Стандарт (любой, не только PSR) состоит из двух частей:

                1. Защита от выстрела в ногу. Сюда относится правило «всегда оборачивать тело условия в фигурные скобки, даже если там одно выражение». В худшем случае вы потратите в файле на две строки больше. Но файлы безразмерные, а строки в них бесплатные. Зато вы гарантированно избежите проблем в будущем, а в качестве бонуса получите более понятные дифы в коммитах.
                2. Вкусовщина. «Табы vs пробелы», «где и сколько пробелов ставить» и т.п. Она нужна, чтобы избавить нас от впадания в bikeshedding. Да, можно долго об этом спорить и что-то кому-то доказывать, но зачем? В конечном итоге никому пользы это не принесёт и никакого влияния на код не окажет. Я когда-то тоже часами настраивал пробелы, скобочки и переносы в редакторе для автоформатирования. А потом нажал там волшебную кнопочку «использовать PSR» и сэкономил себе кучу энергии и времени.


                1. NLO
                  30.07.2017 15:28

                  НЛО прилетело и опубликовало эту надпись здесь


                  1. NLO
                    30.07.2017 16:04

                    НЛО прилетело и опубликовало эту надпись здесь


              1. Zenitchik
                30.07.2017 17:33

                она просто занимает лишнюю строку.

                Более того — неудобно сворачивается в редакторах.


            1. serginhold
              30.07.2017 15:06
              +1

              для меня логично

              if (true)
              {
              }
              


              1. потому что так проще глазами читать код
              2. потому что одинаково с class

              Да и к тому же:

              После условия в if уже ничего не может быть, кроме фигурной скобки. Поэтому пишем ее на той же строке, чтобы случайно ничего не написать между условием и "}".


              Случайно можно написать все что что угодно и где угодно

              $f = function () use ($a) {
              }
              


              function B
              {
              }
              


              Почему везде по разному? Я тут ничего логического не вижу. Что можно случайно не написать или написать после объявления функции?

              По этому пишу всегда и везде:

              {
              }
              


              1. Zenitchik
                02.08.2017 17:12

                Я предпочитаю всегда писать открывающую фигурную скобку на той же строке, а закрывающую — всегда оставлять на строке в одиночестве. По простой причине — привычные мне редакторы показывают такую конструкцию в свёрнутом виде лучше, чем другие варианты оформления кода.


                П.С. Я на PHP не пишу, может, пхпшники другие редакторы используют.


                1. SerafimArts
                  02.08.2017 18:20

                  PHP, как и Go (ну и в Java уже исторически сложилось) — это те языки, где общественностью принят один единый стандарт. Ныне ещё JS потихоньку подбирается к этой стадии...


                  В любом случае, я хочу донести простую мысль: PHP — это не тот язык, где дозволяется/поощряется отсебятина на уровне опенсорсных или коммерческих проектов.


              1. SerafimArts
                02.08.2017 18:28

                TL;DR; Если X является частью интерфейса — перенос скобочек нужен, если частью тела функции/метода — нет.


                Подробнее:


                1а) В одном случае декларация статической структуры (сборка на уровне компиляции)
                1б) В другом динамической (на уровне рантайма)


                2а) Методы реализуют интерфейс (подразумевается семантический, а не кейворд-структура) класса, содержат докблоки и визуально отделяются этой отбивкой.
                2б) Анонимочки же не предоставляют интерфейс и визуально выглядят более "плотно", т.к. являются, либо аргументом другой функции/метода, либо частью тела функции/метода.


                P.S. Код, который оформлен по PSR позволяет на порядки быстрее ориентироваться в интерфейсе структур. И это вполне логичное утверждение.


        1. Goury
          30.07.2017 12:48

          А с какого перепугу само PSR стало обязательным?
          Кучка каких-то мутных личностей решила за весь мир кому как можно жить?


          1. zelenin
            30.07.2017 12:59
            +8

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


            1. Goury
              30.07.2017 14:14

              Ситуации «пользоваться лучшими практиками» и «пользоваться чем угодно, не понимая зачем это надо» — совсем разные.

              Вы культ самолётников навязываете тут, а не практики применяете.


              1. salabon
                31.07.2017 11:33

                Вот полностью поддерживаю.

                Последнее время развелась куча «диванных Системных архитекторов», недавно закончивших курсы/школы программирования, и минусующих только за несоблюдение каких-то стандартов )


                1. Goury
                  31.07.2017 11:53

                  Угу. Можете полюбоваться на мою карму как следствие констатации факта предназначения пеп8 исключительно для внутренних нужд самого питона.


                  1. salabon
                    31.07.2017 12:11

                    Хабр несомненно хороший ресурс.
                    Но, лично для меня, «карма на хабре», давно не является показателем компетентности разработчика.
                    Именно из-за таких ситуаций.


                  1. alexey-m-ukolov
                    31.07.2017 13:12

                    Может, всё-таки, карму слили за комментарии в подобном тоне?

                    P.S. Хотя, что это я, вам там уже всё подробно объяснили.


                    1. alexey-m-ukolov
                      31.07.2017 13:28

                      Карма, конечно, вещь странная — вот автору статьи её слили совершенно незаслуженно — он никому не грубил и откровенных глупостей не писал. Да, статья слабая, но её и надо оценивать, а не в карму минусовать с первых минут.

                      А вот вы свои минуса заработали своим хамством, а не точкой зрения, отличной от большинства, тут у меня никаких сомнений.


                      1. andreymal
                        31.07.2017 13:44

                        В первой версии поста была непростительная глупость с SQL-инъекцией


                      1. RomanPogosyan
                        31.07.2017 14:12

                        Ничего страшного :) первый блин всегда комом. А резкая критика кода, это в принципе отличительная черта многих программистов, так как у них в основе заложено БЛОК СХЕМА -> СТАНДАРТЫ -> КОД. А я не программист просто «люблю поэкспериментировать». Профиль мой «автоматизированные системы управления» и по этому моя стезя ЗАДАЧА->БЛОК СХЕМА а дальше программисты сделают :) По этому в моем коде не то «КАК СДЕЛАТЬ», а «ЧТО СДЕЛАТЬ». Результат думаю наглядный.


    1. dopusteam
      30.07.2017 12:43
      +5

      <input id="hidpass" type=hidden name="password" value='' >
      


      -1

      В одной строке вариант написания атрибутов с одной кавычкой (value=''), с двумя (name=«password») и вообще без них (type=hidden)


    1. AlexLeonov
      30.07.2017 13:02
      +4

      Уважаемый RomanPogosyan и его «коллеги»! Вы можете сколько угодно гадить мне в карму — я переживу.

      Вы никак минусами не отмените того факта, что код в статье ужасен. Он не просто ужасен — он недопустим, даже начинающие студенты не имеют право делать такие грубые ошибки. И вам это уже сказали много раз десятки людей. Вы же не только себя на хабре уничтожили, вы всех php-программистов подводите, заставляя тех, кто читает вашу статью думать, что они все такие!

      Правильно где-то выше написали — это диверсия какая-то.


      1. RomanPogosyan
        30.07.2017 13:37
        +1

        Уважаемый AlexLeonov я еще никому в карму ничего не ставил, a гадить тут походу в моде


        1. AlexLeonov
          30.07.2017 14:27

          Может и не вы, но поклонников, которые считают, что главное, что «код работает», у вас тут много. А мне потом приходится переписывать такой код и перевоспитывать таких людей.


          1. salabon
            31.07.2017 11:40

            Я не знаю, конечно, насколько вы хороший «учитель».
            Но по моему опыту: «Кто умеет делает — кто не умеет учит».

            1. Изначально начали Вы, ставить «двойки и колы» за статью, в которой написано, что код просто для наглядности.

            2. Да, главное что код работает. Это и отличает разработчика от кодера.
            Кодеров пруд пруди, после таких вот «учителей». Они «винитки в машине» и не имеют никакой ценности. Так, Личинка разработчика…

            Разработчик же понимает, что стоит за этими стандартами, из чего они следуют и почему так лучше в данной ситуации. И понимает он это исходя из собственного опыта, а не потому, что так написано в стандарте, принятом какими-то чуваками.

            На счёт стандартов — это не больше, чем рекомендации.
            То же самое относится и к «публичности кода», как писали ниже.
            Грустно, когда люди, вместо обсуждения твоего подхода, фанатично кричат о соблюдении PSR.
            Ну и избитая шутка на счёт «существуют 14 стандартов… нужно сделать один универсальный стандарт...» Тут тоже имеет место быть.

            Я, как системный архитектор, большой международной компании, Вас бы на работу не взял)


            1. AlexLeonov
              31.07.2017 11:47

              Я не знаю, конечно, насколько вы хороший «учитель».

              Дальше вы могли бы ничего не писать.


              1. salabon
                31.07.2017 12:07

                Я не ставил своей целью, как то вас задеть.

                Но по существу, как я вижу, аргументов у Вас нет.


                1. AlexLeonov
                  31.07.2017 12:12

                  Аргументов? Чтобы приводить какие-то аргументы «за» или «против» некоей точки зрения, она (точка) должна существовать и быть озвучена.

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

                  Повода для дискуссии не вижу.


            1. SerafimArts
              31.07.2017 21:11

              На счёт стандартов — это не больше, чем рекомендации.

              В любом случае, в 2017ом году игнорирование этих рекомендаций говорит о том, что автор — совсем зелёный новичок и даже если это не так, я почти уверен, что большинство крайне скептически будут относиться к коду-отсебятине.


              Всё же "рекомендации" они де-юре, а де-факто, нынче — "стандарт".


              1. salabon
                01.08.2017 10:56

                Вы меня видимо не понимаете)
                Рекомендации — это именно рекомендации, а не догма.
                Это не «стандарт» или что-то ещё.
                В любом году.

                Это как говорить, что художник, который пишет картину, должен делать мазки только слева направо, не длиннее 2-х сантиметров. Ибо в 2017 году это «стандарт».


                1. AlexLeonov
                  01.08.2017 11:10

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

                  Смотрите.

                  Первое: собираются разработчики популярных фреймворков, библиотек и самого PHP и признают, что околоязыка — полный бардак.
                  Спорить с этим бессмысленно — действительно, до php-fig бардак был такого количества и качества, что фактически мешал развитию и языка и экосистемы.

                  Кстати, надо отметить, что никто не мешает любому из нас войти в php-fig в любой момент. Это открытая организация (если ее можно вообще назвать таковой).

                  Второе: члены php-fig договариваются, что будут стараться личными и коллективными усилиями уменьшать энтропию в околоPHP. Что они начинают делать? Вырабатывать стандарты: предлагать черновики, обосновывать, дорабатывать, голосовать, принимать и реализовывать принятое в своих фреймворках и библиотеках.

                  И наконец многолетняя работа приводит к результатам: в мире профессионального программирования на PHP уходят в прошлое споры типа «табы vs. пробелы», закрывается дискуссия на тему «как делать автозагрузку», начинают работать по единому интерфейсу все приличные логгеры (SOLID, мать её, Лисков!) и библиотеки кэширование и так далее и тому подобное.

                  Всем от этого становится хорошо и приятно. Стандарты приводят к возможности пользоваться тем же composer, к появлению немонолитных фреймворков и множества полезных библиотек.

                  Вопрос лично вам: что вы видите плохого в этом процессе? Почему вы так резко против действительно общепринятых уже действительно стандартов?

                  P.S. Аргумент о том, что R — это Recommedations, слишком дешёвый. RFC — это тоже всего лишь Request, однако этот факт никого не заботит.


                  1. salabon
                    01.08.2017 12:02
                    +1

                    Я не против самой по себе стандартизации.
                    Это правильно и полезно.

                    Я против фанатичного навязывания «общепринятых» «стандартов» всем подряд.

                    С одной стороны программирование (а не кодинг) — это творчество. И если вы растите разработчиков — не нужно их ограничивать или стандартизировать.
                    А вот если вы растите «винтики» — тогда все правильно. Им не нужно понимание работы в целом. Главное, что бы при смене, новый винтик не нужно было переобучать.

                    С другой стороны, любой язык программирования — это инструмент, в первую очередь.
                    И скальпелем можно резать торт. Удобно ли это и целесообразно, вопрос второй.
                    Вопрос в том, что это делать можно.
                    А вы утверждаете, что по «общепринятым стандартам» скальпелем можно резать только человеков и только специально обученным для этого людям.

                    Это как говорить, что велосипеды должны быть только с одинакового размера колесами. Одинаковой шириной покрышек. Это «общепринятый стандарт». Все остальное «околовелосипедное»… что производители велосипедов собрались, и договорились о стандартах.
                    Да, это добавило универсальности, несомненно. Это хорошо для продукта, но не для инструмента.
                    И вы, как разработчик, вполне можете создать свой велосипед, который будет не хуже, а возможно и лучше серийных решений.

                    Программирование — это в первую очередь творчество. Если ты разработчик конечно)

                    Я не увидел в ваших аргументах, почему именно в этой статье, где код просто для наглядности, необходимо строгое соблюдение «общепринятых стандартов».
                    Потому, что вам сложно его читать?)
                    Так может проблема не в коде?)

                    P.S. Эйнштейн, по моему говорил, что только глупцам нужен порядок…


                    1. AlexLeonov
                      01.08.2017 12:12

                      Мне нравится ваш ответ. По крайней мере в нём убавился градус фанатизма и нетерпимости, и это хорошо.

                      Я не согласен с вами только в одном моменте. Правда, этот момент принципиален настолько, что приводит к полной невозможности согласиться со всеми вашими выводами.

                      Программирование — не творчество.

                      И не будет им никогда для 95% программистов.

                      Это банальное ремесло, которое нужно освоить, чтобы зарабатывать себе на жизнь. Причём по моему глубокому убеждению и профессиональному мнению, изучать программирование нужно в специализированных ПТУ, а не в вузах.

                      Вы можете себе представить сварщика или токаря, который после ПТУ приходит на производство и говорит «да вертел я вокруг своей оси все ваши ГОСТы и типоразмеры, я творец, я так вижу, я буду точить дюймовую резьбу, если на чертеже указана метрическая!»

                      Как долго он продержится на заводе?

                      Токарь или фрезеровщик получают право на творчество лишь после долгих лет у станка, проведенных за вытачиванием стандартных изделий. Изо дня в день. 8 часов, 5 дней в неделю.

                      С чего вы взяли, что у программистов по-другому?

                      Строгое соблюдение стандартов необходимо начинающим, чтобы в последствии не было горького разочарования в профессии. Чтобы не было обид на тему «я — творец, а меня не так поняли». Да так тебя поняли, так. Ты не творец, парень, ты просто кое-какер…


                      1. salabon
                        01.08.2017 12:31

                        Мы говорим о разных вещах.

                        Я говорю о том, что нужно выращивать, специалистов, которые могут создавать что-то новое. Для этого не нужно никаких ограничений.

                        Вы говорите о том, что нужно создавать винтики (кодеров).

                        Ну и конечно 95% из них не будут разработчиками. Кто-то просто на это не способен.
                        А у кого-то вы убили стандартизацией индивидуальность.

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

                        На вашем примере с токарем… он делает продукт.
                        И делает его по заранее заданным техническим параметрам.

                        Но это не значит, что все токари должны делать все детали по «общепринятым стандартам». Вам нужно всего лишь объяснить им для чего эти стандарты нужны и какие они бывают.
                        И снова таки. Токарь следует чертежу, который для него разработал инженер.
                        И этот инженер не обязан фанатично следовать стандартам.
                        Важно, что бы его деталь «работала»
                        Это все, если мы говорим про продукт, который токарь делает на заводе.

                        Когда же токарь делает что-то для себя ( как в этой статье ), не важно как и где он это будет использовать…
                        Он волен следовать чему угодно. Только ему решать. И тут абсолютно не важно насколько много у него опыта. И так же, не следование «стандартам» не делает его деталь хуже.


                        1. RomanPogosyan
                          01.08.2017 12:42

                          Жаль карма не позволяет поставить +. Наконец то появился один комментатор который смотрит на мир не только со стороны стандартов, а так же со стороны идей.
                          п.с. Готов получить еще порцию минусов за комментарий.


                        1. AlexLeonov
                          01.08.2017 12:58
                          +1

                          А у кого-то вы убили стандартизацией индивидуальность.

                          Вы всё же не удержались, чтобы не сказать какую-то пакость… Ничем не обоснованную пакость с переходом на личности. Жаль.

                          Но это не значит, что все токари должны делать все детали по «общепринятым стандартам».


                          Услышьте меня. Чтобы начать что-то делать не по стандарту, чтобы предлагать изменения в стандарты или их отмену — сначала нужно научиться делать по стандарту и делать хорошо.

                          Именно этим и отличается творческий подход от кое-какерства, которые вы пропагандируете.

                          Делай хорошо — и хорошо будет. Хреново получилось — не стандарты виноваты, а ты хреново делаешь!


                          1. salabon
                            01.08.2017 13:13

                            А у кого-то вы убили стандартизацией индивидуальность.

                            Это из личного опыта. Я наблюдал это много раз. Стандартизацией убивается индивидуальность.

                            Я не ставлю своей целью как-то вас задеть.

                            Я говорю вам, что вы учите людей клеить обои. Мотивируя это тем, что это ремесло, надо зарабатывать на жизнь, и все равно 95% из них больше ничего не светит.
                            Учите, что в 2017 году есть стандарты и обои нужно клеить только вертикально, только с перехлестом в 5 мм. и если обои отклеились, что виноваты не стандарты, а просто хреново приклеили.

                            Я говорю вам, как человек, разработавший не один дом, от идеи до конечного проекта, решавший не раз все инженерные тонкости и дома которого стоят уже не один год… что обои можно клеить и горизонтально. И даже под углом в 45 градусов к полу.
                            А можно и вообще без обоев)


                            1. AlexLeonov
                              01.08.2017 13:47

                              Это из личного опыта. Я наблюдал это много раз. Стандартизацией убивается индивидуальность.

                              Так и пишите тогда. И не надо извиняться и говорить, что не хотели задеть — задели. И хотели.

                              Я говорю вам, что вы учите людей клеить обои. Мотивируя это тем, что это ремесло, надо зарабатывать на жизнь, и все равно 95% из них больше ничего не светит.
                              Учите, что в 2017 году есть стандарты и обои нужно клеить только вертикально, только с перехлестом в 5 мм. и если обои отклеились, что виноваты не стандарты, а просто хреново приклеили.

                              Совершенно верно.

                              И пока студент не поклеит тысячу квадратных метров обоев я его близко даже к «творчеству» не допущу. Иначе результат «творчества» будет жалок. Что мы и наблюдаем в обсуждаемой статье.


                              1. RomanPogosyan
                                01.08.2017 14:16

                                Не соглашусь с вашим подходом. Если тот кто желает творить сотворит что то, хоть даже и криво, всегда найдутся люди которые поправят и «вылижут» недостатки. А те которым запрещали творить и убивали это желания изначально не факт что захочет этим заниматься после. Банально пять же упершись в стандарты которые постоянно меняются со стечением времени у него банально может не хватить на это времени.
                                Банальный пример:
                                Допустим человек не изобрел велосипед и до сих пор для него средство передвижения это конь.
                                А какой то умник взял и придумал велосипед с квадратными колесами.
                                Тут вариантов 2.
                                1) Все его засмеют и скажут, что передвигаться на нем крайне тяжело хоть он и передвигается, и передвигается как конь (скачками), и вообще нафиг нам велосипед ведь конь же передвигается. Лучше займитесь селекцией и выведите породу которая быстрее скачет и плавнее.
                                2)Более компетентные в физике люди скажут: Блин а задумка интересная. просто можно бы колеса ему сделать круглыми. Тогда и ехать легче и сена не просит.

                                В обоих случаях будет прогресс. В первом будут лучше кони, во втором будут лучше и коне и велосипеды.

                                Тут нет неправильного варианта, просто второй немного лучше так как прогресс будет быстрее.


                                1. salabon
                                  01.08.2017 14:30

                                  Я просто оставлю это здесь))
                                  image


                                1. oxidmod
                                  01.08.2017 15:16
                                  +1

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

                                  Хочешь творить — пожалуйста. Заведи себе приватный репо и твори.
                                  Хочешь делиться с сообществом — приведи код к общепринятому виду.


                                  1. salabon
                                    01.08.2017 15:45
                                    -1

                                    Творцы разные попадаются)

                                    Но если вы не можете прочитать/понять работающий код, то проблема не в коде)


                                    1. oxidmod
                                      01.08.2017 16:17
                                      +1

                                      Я могу прочесть работающий код.
                                      Но вот странно выходит как-то. Есть вот творцы, типа этого или вот этого… Ну или автор статьи.

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


                                      1. coresky
                                        02.08.2017 20:32

                                        У меня сложилось впечатление, что ты просто платный троль. Тебе платят, за то чтобы тролить все невписывающееся в современный тренд. Да если не хочешь читать творения, да просто не читай, тебя кто заставляет? Хочешь сказать ты отважный боец за тренд? да не верю. Троллингом у него есть время заниматься, а читать новое нет.

                                        ну а мы неотесанные современники

                                        хорошо что хоть такое допущение принимаешь.


                                        1. coresky
                                          02.08.2017 21:32

                                          Хабр и платит, чтобы шухер наводить. Острая дискуссия вызывает интерес, больше прочтений и просмотров. Капля по капле, денег больше. И на оплату тролля хватает. Главное даже не деньги, а популярность сайта. Ну и много платят? Ладно. не интересно мне… просто так спросил. И это понятно, я бы тоже платил, честно признаюсь, какому нибудь acid-option. Как гврится, не хочется, но надо, Федя… Жаль только, что усилий приходится нам прилагать намного больше, чем могло бы понадобиться… Ты что, автор статьи, забыл что внешний мир суров и беспощаден? Сюда нужно все приносить на блюдечке. Готовый фокус-мокус, понятный невооруженным глазом. Каплей меньше и провал. Только если бы был готовый фокус, были бы мы на хабре? Вот и остается троллинг, переводы и аккуратная вода. Старайся лучше, автор)


                                          1. oxidmod
                                            02.08.2017 23:09

                                            А что вы тут забыли? Идите кристализируйте свой код в крылья из глобалов


                                        1. ellrion
                                          02.08.2017 23:13

                                          О! да тут помимо мании величия (которая была видна в комментах под прошлыми статьями) еще и вера в заговоры. Шикарно!)


                                  1. RomanPogosyan
                                    01.08.2017 16:21

                                    Интересно что будут такие «убитые стандартизацией индивидуальности» делать если творец не натворит? даже если ад. Ведь почему придумывают стандарты? потому что творцы натворили аду и это все надо привести к «божеский вид». А если не натворят аду? То писать свой стандартный код «убитым стандартизацией индивидуальностям» на песочке, на пляже, палочкой, для рыбы. Кстати откуда взялся PSR? Оттуда, что появилось много фреймворков, придуманных разными творцами. По вашему все они были написаны криво и только один был правильным. И он стал рекомендацией? Или разработчики ipv6 были криворукие и запустили протокол намного раньше, чем появился RFC для него? И не факт что «убитые стандартизацией индивидуальности» не накосячат в том же аду который, как ни странно, работал. Тоже знаем, тоже плавали.
                                    Никто не запрещает же не использовать то, что не нравится. А если нет другого выхода, то надо радоваться тому, что есть выход хоть и кривой. Иначе его вообще бы не было. И надо искать творца, который не факт, что сотворит по стандарту :)
                                    И еще один минус в том, что стандарты отбивают у «убитых стандартизацией индивидуальностей» желание мыслить. Так как человек — это существо ленивое. Ему дали что-то стандартное, а он и рад. Ведь думать не придется. И тут появится «творец» который «сотворит» что-то с уязвимостью в стандарте и все стандартно летят, так как стандартно делали копи паст и не вникали что, где и как.
                                    Когда вы проходили по «аду» того творца, уверен, что вы сообщали начальству о том что там «ад», и вам 100 пудов предложили «охладить ад». И как поступили вы? Сотворили рай? Судя по тому что вы написали

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

                                    Как то так.


                                    1. oxidmod
                                      01.08.2017 17:35
                                      +1

                                      Свои догадки держите при себе.

                                      зы. Странно, что «А потом такие творцы натворят ад и уйдут творить дальше в другой компании» не вызывает у вас претензий. Тобишь это для вас нормально, наговнокодить и свалить?
                                      ззы. Вовсе не обязательно повторять всю историю развития человечества, чтобы воспользоваться современным гаджетом. Точно также не обязательно наступать на теже костыли что и авторы десятков забытых либ и фреймворков, которые творили забив на принятые стандарты.


                                    1. ellrion
                                      02.08.2017 23:15

                                      "Убитые стандартизацией индивидуальности", "творец". Не много на себя берете?


                                      1. RomanPogosyan
                                        03.08.2017 00:27

                                        Еще один «тут читаю тут не читаю» решил изъявить свое мнение. Перед тем как взвешивать кто и сколько на себя берет, потрудитесь прочитать всю ветку дискуссии пожалуйста. Будьте так добры.


                                        1. ellrion
                                          03.08.2017 00:52

                                          а я прочитал


                                          1. RomanPogosyan
                                            03.08.2017 01:43

                                            тогда могли бы догадаться что «творцы» и «Убитые стандартизацией индивидуальности» цитированы из поста оппонента. И думаю не вам решать, кто тут и чего на себя берет. Так как к вашей личности эти посты не имели ни какого отношения.


                              1. salabon
                                01.08.2017 14:26

                                Вы снова услышали только то, что хотели)

                                И я не извинялся. Ибо изначально не ставил своей целью вас задеть)
                                Я говорю абстрактно, про «таких педагогов» в целом.
                                Считаете и себя таким — ваше дело)

                                Результат творчества, в данной статье, не плохой, рабочий и имеет место для применения. Что уже было отмечено не только мной.

                                То, что за отсутствием следования каким-то стандартам кода, вы не увидели самого алгоритма — грустно и само по себе говорит о многом, в очередной раз подтверждая выражение «кто умеет — делает, кто не умеет — учит».

                                И пока студент не поклеит тысячу квадратных метров обоев я его близко даже к «творчеству» не допущу. Иначе результат «творчества» будет жалок. Что мы и наблюдаем в обсуждаемой статье.

                                Ну а это как бы совсем «зашквар» )

                                P.S. Я так и не услышал, от вас, ни единого аргумента, почему код именно в этой статье должен следовать каким-либо «общепринятым стандартам».


                                1. AlexLeonov
                                  01.08.2017 15:06

                                  После этого комментария я окончательно потерял нить разговора и перестал понимать, что вы хотите.


                                  1. RomanPogosyan
                                    01.08.2017 15:19

                                    Думаю вам пытались втолковать, что не надо заклевывать идею и человека подавшего вариант ее реализации, пусть даже не идеальный. Вместо оценивания велосипеда, оценивая фигуру его колес.


                                    1. salabon
                                      01.08.2017 15:49

                                      Да) если кратко)
                                      Ну и попутно, я пытался объяснить Учителю, что судя по его словам, он возможно что-то делает не так.


                                  1. salabon
                                    01.08.2017 15:47

                                    Я хочу услышать от вас аргументы )
                                    Почему код именно в этой статье должен следовать каким-либо «общепринятым стандартам»?

                                    На счёт «общепринятости», читаемости и стандартности я уже объяснил)


                                    1. zelenin
                                      01.08.2017 17:02

                                      примерно по той же причине, что описана в этой статье https://habrahabr.ru/post/183374/
                                      чтобы код был принят сообществом, желательно — в данном случае обязательно, т.к. код не уникален, и может быть отторгнут сообществом — соответствовать общепринятым стандартом. Когда 95% окружающего тебя кода (все топовые библиотеки гитхаба, принятый в компании кодстайл итд) соответствует psr, то несоответствующий код вызывает отторжение.


                                    1. AlexLeonov
                                      01.08.2017 17:03

                                      Ваш вопрос изоморфен вопросу «почему люди не должны убивать других людей»?

                                      Потому что так общепринято и стандартно.


                                      1. RomanPogosyan
                                        01.08.2017 17:22

                                        Хотя существуют племена каннибалы и по их мнению они должны убить и съесть. И странно почему их не истребили? Тем кому эти племена не интересны, просто к ним не лезут.


                                        1. AlexLeonov
                                          01.08.2017 17:30
                                          +1

                                          Ну так и вы не лезьте на хабр, пока не научитесь писать код так, как его пишут в цивилизованном мире.

                                          А то сожрут ведь :)


                                  1. SerafimArts
                                    03.08.2017 01:41

                                    В этой "хабравложенности" я вообще потерялся кто кому отвечал. Тяжело воспринимать. Так что оставлю и свой коммент в ветке про "стандартизации".


                                    Существует мнение, что "творить" надо кодом, а не средствами его форматирования. И кажется это вполне укладывается в принцип "используйте PSR-1, PSR-2 и PSR-12".


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


                                1. morikvendy
                                  01.08.2017 23:07

                                  Результат творчества, в данной статье, не плохой, рабочий и имеет место для применения. Что уже было отмечено не только мной.

                                  Проблема еще и в том, что «результат творчества» не несет никакой новизны, как я уже отметил ниже, по этому смотрят на реализацию, которая в изначальном варианте статьи была совсем ужасная, сейчас стало немного лучше. Ну и выкладывая код, содержащий грубейшие ошибки (sql injection в первой версии когда в статье), следует быть готовым к тому, что к нему прицепятся.


                                  1. salabon
                                    02.08.2017 10:39

                                    На счёт не новизны спорно.
                                    Я, к примеру, пока не встречал таких реализаций.

                                    На счёт «грубейших ошибок» уже говорили… код для наглядности.


                                    1. morikvendy
                                      02.08.2017 13:50

                                      Про новизну, я уже писал в комментарии ниже: есть статья 2011-ого года и статья 2012-ого года, которые предлагают подобные решения. да во второй статье код тоже фиговый и с sql-injection, но суть статьи примерно таже…


                        1. morikvendy
                          01.08.2017 22:47

                          И снова таки. Токарь следует чертежу, который для него разработал инженер.
                          И этот инженер не обязан фанатично следовать стандартам.

                          Да, инженер может в процессе работы делать что угодно и как угодно, но когда он завершит творческую часть своей работы, то ему нужно будет конечный результат этой работы — чертеж — оформить в соответствии со стандартами, по ГОСТу. В противном случае его либо развернет контролер, либо, если контролера нет или он проглядел ошибки оформления, может случится авария из-за того, что токарь неправильно поймет и сделает деталь не так, как рассчитывал инженер.

                          На мой взгляд со стандартами (рекомендациями) по написанию кода все тоже самое, у себя вы можете делать как угодно — следовать «общепринятым» стандартам, придумать свои или вообще писать как попало, но когда выкладываете код туда, где его будут видеть и читать другие люди, то следует привести его к стандартам того места, куда его выкладываете. Ведь наверняка у вас на работе, если вы не в одиночку ведете проект, есть какой-то code-style. Ну а в общих репозиториях PHP это, обычно psr. И я, честно говоря, не вижу в этом беды, если вам не нравятся эти стандарты, то современные IDE (Intellij Idea и основанные на ней точно, подозреваю что и большая часть других) позволяют настроить автоматическое преобразование кода к тому виду, который вам удобен, сразу после pull и обратное преобразование перед push.


                1. zelenin
                  01.08.2017 11:20

                  Это как говорить, что художник, который пишет картину, должен делать мазки только слева направо, не длиннее 2-х сантиметров. Ибо в 2017 году это «стандарт».

                  мазки — это творчество. требования к оформлению кода — это технические детали.


        1. NLO
          30.07.2017 14:56

          НЛО прилетело и опубликовало эту надпись здесь


  1. RomanPogosyan
    30.07.2017 00:24
    -11

    Тут статью кто либо читает? Или только код? Действительно лучше бы не читал.


    1. jonic
      30.07.2017 02:51
      +8

      А зачем тогда в статье код? что бы его не читать?


      1. RomanPogosyan
        30.07.2017 19:21
        -2

        Ну вы тут написали чтобы написать. Вопрос подразумевал не «чтение кода» а «чтение ТОЛЬКО кода»


        1. jonic
          30.07.2017 20:48
          +1

          Просто представьте на секунду что Вы читаете документацию, с вкраплением how-to и она написана ужасно. Знаете почему я вдруг охладел к написанию статей на хабр? Всё кажется такой мелочью что даже не достойно обсуждения. Ну сделал ты что-то(это я к себе обращаюсь), вау, круто, хорошо. Но сообществу то что с того? Это не фреймворк, это не вещь и не предостережение и не исследование которое было интересно прочитать. Я же зашел в эту статью, потому что не поверите, но за недели две до статьи сам размышлял на тему «имеет ли смысл отправлять пароль сразу захэшированным». Да и у меня до сих пор есть микро-открытия. Только вот они микро. От этого я и не пишу.


        1. morikvendy
          31.07.2017 19:54

          В статье по большому счету нет ничего нового. первый же запрос в google дает ссылки на статью с описанием похожего механизма пятилетней давности и пост на хабре по той же тематике шестилетней давности. Поэтому смотреть имеет смысл только на реализацию, а она ужасна…
          Ну и ценность данного метода в плане безопасности почти нулевая.


  1. voidshah
    30.07.2017 01:11

    мда… код — просто «ужасть»… по теме — есть вариант использования шифрования с открытым ключом. Так, например, делают некоторые платежные системы.


  1. jonic
    30.07.2017 02:33
    +1

    Я вот понять не могу, как блин (много слов не культурных) продается netcat в 2017 году и его еще хвалят и хотят на нём сайты? Ну как?! КАК?!


    1. Eugeny1987
      30.07.2017 05:35

      видимо также и как и битрикс


    1. dopusteam
      30.07.2017 13:36

      Скажите, а при чем тут netcat?


      1. jonic
        30.07.2017 13:41

        Если посмотреть на исходники netcat, то они не далеко ушли от кода в статье.


  1. beat
    30.07.2017 08:21
    +5

    совсем не странно что многие потом пишут PHP — говно, такое смотришь, кровь из глаз


  1. chelaxe
    30.07.2017 08:42
    +3

    Есть OpenPGP.js или crypto-js. В свое время на основе их и Node.js делал чат с шифрованием.


    1. jonic
      30.07.2017 12:41

      Так точно, вторая даже в этой статье используется.


  1. vkirkizh
    30.07.2017 12:42

    Зачем изобретать велосипед, когда есть HTTP Digest Auth? https://ru.m.wikipedia.org/wiki/Дайджест-аутентификация


  1. m0rtis
    30.07.2017 12:42
    +4

    Я вот понять не могу — это диверсия такая?? Уже которая статья на Хабре (кроме дайджеста) с тэгом "php" — это лютый невообразимый кошмар.
    Признайтесь, вы специально это делаете, чтобы дать возможность уверенно писать, что "php-программисты тупые уроды"???


    1. andreymal
      30.07.2017 17:10

      Я предполагаю, что авторы подобных постов сами не совсем виноваты в своей «тупости», боюсь, что их так кто-то учит и что-то надо делать с такими учителями


      1. AlexLeonov
        30.07.2017 21:05

        Я вам, как действующий преподаватель, открою секрет, кто их учит.

        Их учит youtube, rutracker и сервисы «складчин».


  1. Dmitry_5
    31.07.2017 14:26

    А подскажите дилетанту, почему такой функциональности не реализовано в браузерах с завода, чтобы шифровать введенный пароль на уровне компонента ввода? Слишком низкий прирост безопасности?


    1. andreymal
      31.07.2017 15:41

      Почему же, реализовано — HTTPS называется


      1. Dmitry_5
        31.07.2017 18:40

        Я про шифрование еще до передачи в канал, в памяти компонента textinput, так же как он умеет звездочками пароли закрывать, так пусть и шифрует сразу


        1. RomanPogosyan
          31.07.2017 19:49

          Так вопрос в том, что есть 100500 типов шифрования обратимых и необратимых. в них и заключается полет фантазий за которые меня так минусуют :)


          1. Dmitry_5
            31.07.2017 19:55

            Передать компоненту тип хэширования/шифрования, ключ, соль, перец (вычеркнуто). Пораньше зашифруешь — поближе возьмёшь!


            1. Dmitry_5
              31.07.2017 19:57

              И, самое главное, будет меньше велосипедов


        1. andreymal
          31.07.2017 20:02
          +1

          И это тоже есть (Digest), только никем не используется. Подозреваю, если покопаться, то все подобные методы окажутся в чём-то небезопасными.


          Например, в алгоритме из данного поста знать пароль для авторизации вообще не нужно, достаточно знать md5 пароля. Который хранится как есть в базе и который можно оттуда прочитать любым select'ом (кстати, напомню, в первой версии поста была SQL-инъекция).


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


          У одних и тех же паролей будет один и тот же md5, так что, получив доступ к базе, мы сразу же сможем узнать, у каких пользователей стоят одни и те же пароли.


          Короче, лучше просто прикрутить HTTPS и солить пароли в какие-нибудь bcrypt/scrypt/PBKDF2/Argon, так намного проще и безопаснее и надёжность проверена всеми кому не лень.


    1. Zenitchik
      31.07.2017 15:45

      почему такой функциональности не реализовано в браузерах с завода

      Это Вы про HTTPS?

      UPD:
      Опередили. Но удалять не буду.


  1. RomanPogosyan
    31.07.2017 15:25
    -1

    Думаю потому что нет стандарта шифрования. они бывают разного уровня и сложности. С завода реализован HTTPS. За шифрование которого отвечают некоторые конторы за деньги или на страх и риск пользователя самописные сертификаты. Все остальное — полет фантазий.


    1. SerafimArts
      31.07.2017 20:59

      Знакомьтесь: https://letsencrypt.org/ Под "некоторыми конторами" в данном случае выступают мозилла, хром, циско, фейсбук и прочие, чуть менее именитые заведения. "Самоподписывают" за бесплатно.