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

    +139

    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
    class secure
    {
        public function clear_get($_GET)
        {
            foreach ($_GET as $inx => $var)
            {
                if (!empty($_GET[$inx]))
                {
                    $_GET[$inx] = trim($_GET[$inx]);
                    $_GET[$inx] = mysql_real_escape_string($_GET[$inx]);
                    $_GET[$inx] = htmlspecialchars($_GET[$inx]);
               
                }
                else
                    $_GET[$inx] =NULL;
            
            }
        }
    
           public function clear_post($_POST)
        {
            foreach ($_POST as $inx => $var)
            {
                if (!empty($_GET[$inx]))
                {
                    $_POST[$inx] = trim($_POST[$inx]);
                    $_POST[$inx] = mysql_real_escape_string($_POST[$inx]);
    
                }
                else
                    $_POST[$inx] =NULL;
    
            }
        }
    }

    Опытный прогер. мля

    Запостил: Vasiliy, 19 Апреля 2011

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

    • копипаст во все поля.
      Ответить
    • главное что class secure
      Ответить
      • Так делать очень-очень плохо? А почему?
        Ответить
        • Да как минимум потому что нельзя портить входящие данные, а их экранирование - это и есть порча данных. Экранировать нужно непосредственно перед выводом данных или перед выполнением запроса (в этом случае класс для работы с базой должен это делать).
          Плюс к этому, что будет, если эти функции будут вызваны до соединения с базой? Ошибка будет, так как без соединения с базой MySQL функция mysql_real_escape_string ниразу не пашет. Кстати, а если вдруг будет использоваться другая СУБД?
          И последнее - зачем $_POST в объявлении функции, если эта переменная глобальная и передавать ее параметром не обязательно? Да и путаница в названиях внутри переменной.
          Ответить
    • secure in x

      > опытный прогер
      10 лет?
      Ответить
    • в действиях над постом на пустоту проверяется почему-то get =)
      Ответить

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