1. PHP / Говнокод #12088

    +55

    1. 1
    2. 2
    3. 3
    4. 4
    if (trim((string) $_GET['tag'])) {
        $current = $conn->fetchAll("SELECT LOWER('" . (string) $_GET['tag'] . "') as `tag`");
        $current = $current[0]['tag'];
    }

    Запостил: UnnamedUser, 09 Ноября 2012

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

    • Я, Lowezar, находясь в здравом уме и твердой памяти, торжественно заявляю:
      Нив каком я не в здравом уме, а о твёрдой памяти и вовсе можно не вспоминать. Совсем не торжественно заявляю: использование SQL только ради его функций для обработки одиночных значений я ещё не встречал...
      Ответить
      • Да еще и с потенциальной sql иньекцией...
        Ответить
        • Может быть, это замаскированная закладка, оставленная разработчиком?
          Ответить
          • Ага:
            http://example.com/?tag=ololo%27);DROP%20mysql;SELECT%20(%27ololo
            Ответить
            • Просовывание нескольких SQL-команд за один запрос не катит с MySQL. С Postgres'ом бы прокатило, например. Just to mention.
              Ответить
              • Нужно оглянувшись по сторонам, и проверив, что никто не глядит через плечо, незаметно подсунуть mysqli_multi_query в реализацию fetchAll...
                Ответить
              • Ну и кстати, если этот $current потом показывается где-то на страничке, то можно поступить примерно так:
                http://example.com/?tag=ololo%27)+as+fuck,(select+password+from+users+where+id%3D1+and+%271%27%3D%271

                (Пароли следует хранить нехешированными).
                Ответить
                • >(Пароли следует хранить нехешированными).
                  Пойду расшифровывать
                  Ответить
          • Там весь код одна большая закладка
            Ответить
      • А зря. Тут бывало-с уже. Обработка даты - точно. Не так эклетично, конечно, но тоже годно.
        Ответить
    • vanished
      Ответить

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