1. JavaScript / Говнокод #24641

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    <!-- todo: put this in a different file!!! -->
    <script>
    function authenticateUser(username, password) {
      var accounts = apiService.sql(
        "SELECT * FROM users"
      );
    
      for (var i = 0; i < accounts.length; i++) {
        var account = accounts[i];
        if (account.username === username &&
            account.password === password)
        {
          return true;
        }
      }
      if ("true" === "true") {
        return false;
      }
    }
    
    $('#login').click(function() {
      var username = $("#username").val();
      var password = $("#password").val();
    
      var authenticated = authenticateUser(username, password);
    
      if (authenticated === true) {
        $.cookie('loggedin', 'yes', { expires: 1});
      } else if (authenticated === false) {
        $("#error_message").show();
      }
    });
    </script>

    This JavaScript code powers a 1,500 user intranet application

    Запостил: theraphim, 20 Августа 2018

    Комментарии (35) RSS

    • Классно, выбрали всех юзеров вместе с паролями из базы, а потом в цикле ищем нужного (на клиенте!).
      if ("true" === "true") {
          return false;
        }
      Это зачем?

      Это на каком сайте в каком ональном отверстии такое говно?
      Ответить
      • На этом.
        Ответить
      • Тут вся архитектура порочна:
        $.cookie('loggedin', 'yes', { expires: 1});

        Это вообще можно сразу выполнить из сосноли браузера и не морочить себе голову вспоминанием пароля.
        Ответить
        • Интересно, зачем там логиниться и вообще регистрироваться? Какие на этом сайте можно совершить действия и как сервер поймёт, что за юзер их совершает?
          Ответить
          • Для этого нужно увидеть оставшуюся часть сайта. Вдруг там к запросам логин юзера подставляется скриптом? Может быть, там все действия через аякс?
            Ответить
    • Выкладывать коды нужно без тега "<script>", если это не несёт дополнительную смысловую нагрузку.
      Ответить
      • А комментарий?
        <!-- todo: put this in a different file!!! -->
        Ответить
    • apiService.sql(mysql_real_escape_string(
          "SELECT * FROM users"
      ));


      Нужно так?
      Ответить
      • Эскейпить данные полученные из базы? :)

        ЗЫ. в жопаскрипит нет такой функции.
        Ответить
        • В данном примере эскейпится константа "SELECT * FROM users", а не полученные данные.
          Ответить
          • Ой. :)
            Какая-то странная у меня ашипка.
            Ответить
            • Композиция операторов не в том порядке. Это может быть как-то связано с изучением функциональных ЯП?
              Ответить
        • > в жопаскрипит нет такой функции

          через Ajax можно реализовать
          Ответить
        • > в жопаскрипит нет такой функции

          через Ajax можно реализовать
          Ответить
        • > в жопаскрипит нет такой функции

          через Ajax можно реализовать
          Ответить
        • > в жопаскрипит нет такой функции

          через Ajax можно реализовать
          Ответить
        • > в жопаскрипит нет такой функции

          через Ajax можно реализовать
          Ответить
        • > в жопаскрипит нет такой функции

          через Ajax можно реализовать
          Ответить
          • Кончил тебе через аякс. Проверь.
            Ответить
          • >SMTP Error: Could not connect to SMTP host. SMTP Error: Could not connect to SMTP host.
            Что опять случилость?
            Ответить
            • А если не отключили нотификацию по email и автор говнокода, и автор комментария, то висит вдвойне дольше.
              Ответить
            • А если не отключили нотификацию по email и автор говнокода, и автор комментария, то висит вдвойне дольше.
              Ответить
            • А если не отключили нотификацию по email и автор говнокода, и автор комментария, то висит вдвойне дольше.
              Ответить
            • А если не отключили нотификацию по email и автор говнокода, и автор комментария, то висит вдвойне дольше.
              Ответить
            • А если не отключили нотификацию по email и автор говнокода, и автор комментария, то висит вдвойне дольше.
              Ответить
            • А если не отключили нотификацию по email и автор говнокода, и автор комментария, то висит вдвойне дольше.
              Ответить
        • > в жопаскрипит нет такой функции

          через Ajax можно реализовать
          Ответить
    • В интранете защита может быть чисто административной: кто сломал сайт, тот лишился премии.
      Ответить
      • > кто сломал сайт

        А как это узнать, и можно ли этому доверять, если:
        1. можно loggedin: yes, либо
        2. все логины и пароли в области видимости консоли браузера
        3. можно запроксироваться с компа коллеги или любого компа в сети, например с телефона по вайфаю, который в случае разбирательств проверять не станут

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

    Добавить комментарий