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

    +154

    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
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    <?php
    include("blocks/bd.php");
    if (!isset($_SERVER['PHP_AUTH_USER']))
    
    {
            Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
            Header ("HTTP/1.0 401 Unauthorized");
            exit();
    }
    
    else {
            if (!get_magic_quotes_gpc()) {
                    $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
                    $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
            }
    
            $query = "SELECT pass FROM userlist WHERE user='".$_SERVER['PHP_AUTH_USER']."'";
            $lst = @mysql_query($query);
    
            if (!$lst)
            {
                Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
            Header ("HTTP/1.0 401 Unauthorized");
            exit();
            }
    
            if (mysql_num_rows($lst) == 0)
            {
               Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
               Header ("HTTP/1.0 401 Unauthorized");
               exit();
            }
    
            $pass =  @mysql_fetch_array($lst);
            if ($_SERVER['PHP_AUTH_PW']!= $pass['pass'])
            {
                Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
               Header ("HTTP/1.0 401 Unauthorized");
               exit();
            }
    
    
    }
    
    
    
    
    ?>

    Запостил: smith, 08 Апреля 2014

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

    • Жуть.
      Ответить
    • > if (!get_magic_quotes_gpc()) {
      Вот так вот меджик квоты из якобы "удобного инструмента" превратились в настоящую головную боль ;)
      Ответить
      • Так это много чего так было в волшебном мире PHP. Я видел код, который проверял с десяток таких настроек.
        На самом деле, правильный код выглядел бы так.
        if (!get_magic_quotes_gpc()) {
        die("Fuck your admin");
        }

        Бонусом - будет работать и на 5.4
        Ответить
        • Вот что значит невнимательная паста. Условие должно быть инвертировано же!
          Ответить
          • Нет-нет, код же абсолютно правильный :))

            Если выключены мэджик квоты - выводим fuck your admin.
            Ответить
      • автопопадание параметров запоса в переменные, известное как register_globals - тоже изначально благое намерение было.
        Ответить
        • Видел код, где это эмулировалось, с перезаписью определенный выше переменных, которые попадали в sql запрос.
          Ответить
          • уж не мой ли код? я делал подобный костыль, когда переносил сайт, а там, оказалось, автор на это полагался (со всеми уязвимостями)
            Ответить
    • Может, в таких случаях запретить использовать C-c/C-v? Хоть печатать быстрее научится =) И думать заодно
      Ответить

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