Главная страница / Найденные ошибки / Недостаточная фильтрация входящих данных
май 10 2009

Недостаточная фильтрация входящих данных

Проблема: Недостаточная фильтрация входящих данных при обработке новостей.

Ошибка в версии: 8.0 и ниже

Степень опасности: Низкая

Ручное исправление:

Откройте файл: engine/classes/parse.class.php

найдите:
            if( ((strpos( strtolower( $attrSubSet[1] ), 'expression' ) !== false) && ($attrSubSet[0] == 'style')) || (strpos( strtolower( $attrSubSet[1] ), 'javascript:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'behaviour:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'vbscript:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'mocha:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'data:' ) !== false and $attrSubSet[0] == "href") || ($attrSubSet[0] == "href" and strpos( strtolower( $attrSubSet[1] ), $config['admin_path'] ) !== false and preg_match( "/[?&%<[]]/", $attrSubSet[1] )) || (strpos( strtolower( $attrSubSet[1] ), 'livescript:' ) !== false) ) continue;


замените на:
            if( ((strpos( strtolower( $attrSubSet[1] ), 'expression' ) !== false) && ($attrSubSet[0] == 'style')) || (strpos( strtolower( $attrSubSet[1] ), 'javascript:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'behaviour:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'vbscript:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'mocha:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'data:' ) !== false and $attrSubSet[0] == "href") || (strpos( strtolower( $attrSubSet[1] ), 'data:' ) !== false and $attrSubSet[0] == "src") || ($attrSubSet[0] == "href" and strpos( strtolower( $attrSubSet[1] ), $config['admin_path'] ) !== false and preg_match( "/[?&%<[]]/", $attrSubSet[1] )) || (strpos( strtolower( $attrSubSet[1] ), 'livescript:' ) !== false) ) continue;


Найдите:
        $source = str_replace( "`", "`", $source );

Ниже добавьте:
        $source = preg_replace( "#<iframe#i", "<iframe", $source );
        $source = preg_replace( "#<script#i", "<script", $source );


Дистрибутив версии 8.0 обновлен.

Комментарии

  1. WMDrakon (Клиенты)

    10 мая 2009 22:00 141 комментарий
    Спасибо :)
  2. Fun (Посетители)

    10 мая 2009 22:00 22 комментария
    А можно с обновленного дистрибутива заменит parse.class.php файл? что бы не искать эти строка?
  3. celsoft (Администраторы)

    10 мая 2009 23:49 3 854 комментария
    Цитата: Fun
    А можно с обновленного дистрибутива заменит parse.class.php файл? что бы не искать эти строка?

    конечно можно
  4. Pentaru (Клиенты)

    11 мая 2009 01:19 21 комментарий
    Спасибо
  5. Phanas (Посетители)

    11 мая 2009 04:01 13 комментариев
    Цитата: celsoft
    А можно с обновленного дистрибутива заменит parse.class.php файл? что бы не искать эти строка?

    а в 7.5 ?

    если нет то можете еще обновить 7.5 дистрибутив
  6. celsoft (Администраторы)

    11 мая 2009 09:57 3 854 комментария
    Цитата: Phanas
    а в 7.5 ?

    Нет
  7. FreeRider (Клиенты)

    11 мая 2009 10:41 18 комментариев
    спасибо)
  8. Medik18 (Клиенты)

    11 мая 2009 12:23 23 комментария
    Цитата: celsoft
    Ошибка в версии: все версии

    Почему если написано
    Ошибка в версии: все версии
    Данную ошибку нельзя исправить например на версии 7.3?
    Считаю это не уважением к клиентам.

    P.S.: Лицензия активирована.
  9. celsoft (Администраторы)

    11 мая 2009 14:16 3 854 комментария
    Цитата: Medik18
    Данную ошибку нельзя исправить например на версии 7.3?
    Считаю это не уважением к клиентам.

    Где написано, что нельзя? Ручное исправление опубликовано, и оно подходит для всех версий скрипта, в том числе и для версии 7.3
  10. ATHF (Клиенты)

    11 мая 2009 15:23 33 комментария
    Обновил!

    Какая то интересная фраза "Недостаточная фильтрация входящих данных", что она означает?
  11. wawilon (Посетители)

    11 мая 2009 16:29 5 комментариев
    Какая то интересная фраза "Недостаточная фильтрация входящих данных", что она означает?

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

    $source = preg_replace( "#<iframe#i", "&lt;iframe", $source );
    $source = preg_replace( "#<script#i", "&lt;script", $source );

    Меня вот больше интересует а почему нельзя просто все "<" и ">" заменить на &lt; и &gt;? Как мне кажется это уберет любые теги. Неужели это плохо?
  12. megaborgovik (Клиенты)

    12 мая 2009 07:18 9 комментариев
    Celsoft, Спасибо за ручник, и своевременное выявление багов !!!
  13. Medik18 (Клиенты)

    12 мая 2009 14:10 23 комментария
    Цитата: celsoft
    Где написано, что нельзя? Ручное исправление опубликовано, и оно подходит для всех версий скрипта, в том числе и для версии 7.3

    Просто для рядового клиента, не знающего PHP, выполнить данную рекомендацию:

    Откройте файл: engine/classes/parse.class.php

    найдите:
    if( ((strpos( strtolower( $attrSubSet[1] ), 'expression' ) !== false) && ($attrSubSet[0] == 'style')) || (strpos( strtolower( $attrSubSet[1] ), 'javascript:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'behaviour:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'vbscript:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'mocha:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'data:' ) !== false and $attrSubSet[0] == "href") || ($attrSubSet[0] == "href" and strpos( strtolower( $attrSubSet[1] ), $config['admin_path'] ) !== false and preg_match( "/[?&%<\[\]]/", $attrSubSet[1] )) || (strpos( strtolower( $attrSubSet[1] ), 'livescript:' ) !== false) ) continue;


    замените на:
    if( ((strpos( strtolower( $attrSubSet[1] ), 'expression' ) !== false) && ($attrSubSet[0] == 'style')) || (strpos( strtolower( $attrSubSet[1] ), 'javascript:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'behaviour:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'vbscript:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'mocha:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'data:' ) !== false and $attrSubSet[0] == "href") || (strpos( strtolower( $attrSubSet[1] ), 'data:' ) !== false and $attrSubSet[0] == "src") || ($attrSubSet[0] == "href" and strpos( strtolower( $attrSubSet[1] ), $config['admin_path'] ) !== false and preg_match( "/[?&%<\[\]]/", $attrSubSet[1] )) || (strpos( strtolower( $attrSubSet[1] ), 'livescript:' ) !== false) ) continue;


    не получится, т.к. код выглядит немного по другому.
  14. Phanas (Посетители)

    12 мая 2009 17:18 13 комментариев
    Medik18,
    + 1 могли еще пару первых версий исправить , там в этом парсе класс часто ошибки вылазят так то не хочется туда лезть .
  15. celsoft (Администраторы)

    12 мая 2009 18:34 3 854 комментария
    Medik18,
    Обновляются всегда только актуальные версии скрипта. Все другие версии скрипта считаются устаревшими и не рекоменуемыми к использованию. Обновлятся или нет решает каждый сам, но то что устаревшие версии скрипта не обновляются нами, не является неуважением к клиентам, это следствие того, что жизненный цикл этих версий истек.
    Цитата: Medik18
    Просто для рядового клиента, не знающего PHP, выполнить данную рекомендацию не получится, т.к. код выглядит немного по другому.

    Вот именно он выглядит немного по другому, потому что другое форматирование. Выглядеть по другому, не значит что другой код. И для внесения изменений, не требуется знаний PHP, требуется лишь внимательность, чтобы увидеть данный код.
  16. Phanas (Посетители)

    13 мая 2009 02:25 13 комментариев
    Вы бы сначала выпускали старую версию с исправленными ошибками и там обновляли бы библиотеку Highslide JS редактор WYSIWYG и так далее ну тойсть без добавление новых функций..

    Мне дак обновление те что присутствуют в верисии в 8.0 не так у ж нужны, и большинство модулей приходится под гонять под новые версии, и приходится нанимать прогера за деньги.. Это большой минус..
  17. celsoft (Администраторы)

    13 мая 2009 03:46 3 854 комментария
    Цитата: Phanas
    Вы бы сначала выпускали старую версию с исправленными ошибками и там обновляли бы библиотеку Highslide JS редактор WYSIWYG и так далее ну тойсть без добавление новых функций..

    Причем здесь данный патч и Highslide и WYSIWYG? Вам не нужны новые версии, и новые возможности, другим нужны. DLE не персонально для вас разрабатывается.
    Цитата: Phanas
    и большинство модулей приходится под гонять под новые версии, и приходится нанимать прогера за деньги.. Это большой минус..

    и вы хотите чтобы я был вашим персональным программистом, причем по стоимости скрипта. Только я не персональный программист, я работаю на проект, а не на конкретного заказчика. Вы приобретали DLE в том виде в котором он есть, а он обновляется за считанные минуты, и не нужно подгонять ни о одного стандартного модуля, который входит в дистрибутив. Вам гарантируется полная работоспособность именно стандартных файлов скрипта, а не многочисленных модулей, которые вам разрабатывал кто то и работоспособность модулей и их быстрое и беспроблемное обновление на новые версии нужно требовать от авторов этих модулей, а не здесь. Здесь вам предоставляют гарантированное и быстрое обновление только того, что вы именно здесь приобрели, а не где то еще.
  18. GTS_gelezn (Клиенты)

    13 мая 2009 05:05 70 комментариев
    Не реально тянуть поддержку всех версий скрипта. Что за бред, одному последняя версия не нужна, другому предпоследняя. Чтоб не переписывать модули начиная с 8 версии ввели API. Пусть ваш прогер нанятый за деньги использует этот функционал. Если в нем чего то не хватает, связывается с celsoft ом и просит дополнить.
    Кстати API пропиарили, но хорошо бы заделать какуюнить страничку, что оно позволяет на текущий момент, каковы методы доступа к тому или иному. Как в примери для получения инфы о пользователях только для всех возможных функций.
  19. lestatbbk (Посетители)

    15 мая 2009 10:50 5 комментариев
    Спасибо, исправил *THANX*
  20. Mr-X (Посетители)

    18 мая 2009 14:08 12 комментариев
    bully спасибо
  21. pokladovs (Посетители)

    19 мая 2009 20:59 1 комментарий
    Спасибо wink
  22. shvak (Посетители)

    20 мая 2009 14:05 1 комментарий
    спс. заменил файл
  23. max_nutnet (Посетители)

    21 мая 2009 11:02 1 комментарий
    Не сказал бы, что эта дыра со степенью опасности низкая.
    Мне обильно затроянили сайт, скорее всего из-за этой вот дыры.
  24. fora (Клиенты)

    1 июня 2009 14:13 3 комментария
    Спасибо Владимир smile
  25. alex_778 (Посетители)

    5 июня 2009 22:31 1 комментарий
    what
  26. sirota77 (Посетители)

    10 июля 2009 14:47 1 комментарий
    Цитата: Medik18
    не получится, т.к. код выглядит немного по другому

    согласен, но рядовому клиенту и нефиг в коде делать ( уже засрали школьники интернет)
  27. drkane (Клиенты)

    20 августа 2009 21:56 1 комментарий
    где можно указать чтоб 8.0 заменилось на 8.2 ?
    я исправил вручную. еще бы хотелось исправить это)))
  28. celsoft (Администраторы)

    20 августа 2009 22:58 3 854 комментария
    Цитата: drkane
    где можно указать чтоб 8.0 заменилось на 8.2 ?
    я исправил вручную. еще бы хотелось исправить это)))

    А причем здесь 8.2? Это не исправление для 8.2 или от 8.2. Версия 8.2 изначально не подвержена данной проблеме.
  29. Guideline (Клиенты)

    17 сентября 2009 06:59 6 комментариев
    Спасибо большое!

Информация

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

Календарь

«    Январь 2023    »
ПнВтСрЧтПтСбВс
 1
2345678
9101112131415
16171819202122
23242526272829
3031 

Опрос на сайте

Совершаете ли вы покупки в интернет?