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

    +165

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    if (result.indexOf('myWinLoadSD') > -1) {
    	_uWnd.alert('<br /><b>Вы успешно проголосовали</b>', '', {
    		w: 250,
    		h: 70,
    		tm: 3000
    	});
    	_uWnd.close('cap');
    } else {
    	result = $(re).text().replace(/<div[^>]+/, '').replace(/<\/div>/, '').replace(/>\_/, '_');
    	$('body').append('<scri' + 'pt type="text/jav' + 'ascript">' + result + '<' + '/script>');
    }
    });

    Бабуин!

    Запостил: substr, 12 Августа 2011

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

    • '<scri' + 'pt type="text/jav' + 'ascript">' + result + '<' + '/script>'

      Фэйк?
      Ответить
      • говорят, что полезно
        Ответить
        • Часто натыкалась на такое в джаваскриптовых вставках, зачем так вообще делают?
          Ответить
          • Было очень модно десяток лет назад, когда появилась куча антивирусов, детектирующих вирусы в js. Вероятно, код рвали для того, чтобы их запутать. Либо это рассчитано на поисковые системы (вроде бы Гугл копается в скриптах) или чтобы веб-прокси не портили код.
            Ответить
            • Еще так электрические почтовые адреса прячут от ботов.
              Ответить
              • Это мой код :D C укоза, суть в том, что если прописывать прямо
                append('<script type="text/javascript">' + result + '</script>');
                то скрипт перестает работать, а через FireBug или консоль разработчика показывается ошибка, щас даже скрин сделаю...
                http://clip2net.com/s/16MZK
                Ответить
                • А вот и говномес.
                  Такое подозрение, что ему шаблон рвут две подряд идущие двойные кавычки. Или я ошибаюсь?
                  Ответить
                  • где ты видишь что они идут подряд?
                    Ответить
                  • '<scri' + 'pt type="text/javascript">' + result + '<' + '/script>'

                    сейчас вот так и всё работает, двойные кавычки тут не причем
                    Ответить
                    • Увидел в 10 строке исходного кода. Я не телепат что у тебя там сейчас работает.
                      Ответить
                      • я про type="text/javascript", еще раз повторюсь, что тут двоиные кавычки не причем, я несколько месяцев назад просматривал подобный скрипт и встретил там конструкцию вида: '<'+'script и т.д
                        Сам задался вопросом а зачем так? но так и не понял тогда, а сейчас вот, выполняя заказ, столкнулся с проблемой этой и попробовал как там, итог: работает... не знаю почему но интерпретатор просто не хочет воспринимать тег script внутри уже существующего script... но почему? пока не нашел ответа на этот вопрос... подожду тут ответа, может кто знает
                        Ответить
                        • А все потому, что по-человечески, надо использовать
                          var script = document.{куда вы его хотите добавить}.appendChild(document.createElement("script"));
                          script.src = "URL вашего скрипта";

                          А добавив произвольный текст в документ вы можете ошибится и получится совсем не то, что вы ожидали.
                          Ответить
                          • Да в этом ГК код мозгоразрывающий. Автор умудрился одной строке использовать jQuery и адскую конструкцию
                            '<scri' + 'pt type="text/jav' + 'ascript">' + result + '<' + '/script>'

                            Строкой выше:
                            result = $(re).text().replace(/<div[^>]+/, '').replace(/<\/div>/, '').replace(/>\_/, '_');

                            Не проще ли было сразу удалить дивы через DOM, тогда бы и следующая строка не понадобилась?
                            Ответить
                            • я нуб, объясни как удалить дивы через DOM?
                              Ответить
                              • https://developer.mozilla.org/En/DOM/Node.removeChild
                                Ответить
                                • это понятно, но как это прикрутить к тому, что отвечает сервер после отправки данных через $.post
                                  Ответить
                              • Раз уж здесь используется jQuery, то для того, чтобы вынуть _ из дивов, произносим заклинание:
                                $('div', re).each(function(){
                                  if($(this).html()=='_') {
                                    $(this).replaceWith($(this).contents())
                                  }
                                });

                                К сожалению, селектор :contains("_") мы применить не можем, потому что он удалит лишнее. Хотя... тут слишком мало контекста. Мы не знаем, кто такой re.
                                Ответить
                                • суть не в лове _ из дива а в другом, вот примеры того что возращает сервер:
                                  если успешно: http://clip2net.com/s/16P6H
                                  если ошибка: http://clip2net.com/s/16P6X

                                  опять же здесь идет див который я удаляю регуляркими, а скрипт выводиться текстом и опять же ТЕРЯЕТСЯ ТЕГ SCRIPT! вот поэтому ставил это:

                                  '<scri' + 'pt type="text/jav' + 'ascript">' + result + '<' + '/script>'

                                  чтобы результат выводился в скрипте на странице
                                  Ответить
                                  • Всё, понял. Я сначала ступил. result является скриптом, который нужно исполнить. А eval() для этого не подходит?

                                    Предварительно из $(re).text() нужно выгрызть дивы. Если мы его загрузим как DOM, то последствия могут быть непредсказуемы, потому что это скрипт, а не сырой HTML-код. Тогда, действительно, лучше выгрызать регуляркой.
                                    Ответить
                                    • ну вот и добился я то, чего хотел, а substr был в шоке от этого кода, сегодня зайдет я ему напомню посмотреть...
                                      Ответить
                                  • TRANE73, а почему бы тогда сразу не выполнить этот скрипт?
                                    (new Function('',result))();
                                    // eval() не предлагать!

                                    Почему обязательно нужно добавлять какую-то парашу, которая запустит какой-то скрипт, выводящий какую-то другую парашу?
                                    Ответить
                                  • опять катимся в нубоконсалтинг с быдлоскриншотиками?
                                    Ответить
              • Мудаки так прячут электрические адреса.
                А если жс выключен?

                7io<!-- Fuck you, robots! -->n@ma<!-- Fuck you, robots! -->il.ru
                Ответить
                • <span style="unicode-bidi: bidi-override; direction: rtl;">&gt;vog.ecu@maps&lt; чивородиС латярпС ,оньлетиухО</span>
                  Ответить
          • так делают, потому что, при вставке в страницу, полноценный тег будет воспринят как управляющий, не как часть скрипта, а как часть документа
            <script> alert('</script>');</script>
            вот так мы получим синтаксическую ошибку и '); в аутпуте
            Ответить
            • вот и я о том же
              Ответить
            • Тогда правильно
              var s = document.createElement("script");
              document.getElementById('some-element-id').appendChild(s);

              Или можно попробовать внутри тега script делать <![CDATA[любой говнокод]]>
              Ответить
    • _uWnd == window ?
      Ответить
      • Никак нет! Это всего лишь пространство имён из библиотеки uWnd.
        Смотреть здесь: http://s105.ucoz.net/src/uwnd.js
        Ответить
        • ога, у меня прям в глаз встроен деобфускатор
          Ответить
          • На всякий случай:
            http://www.felgall.com/jsformat.htm
            http://www.gosu.pl/decoder/
            http://www.hallvord.com/opera/scriptformatter.php
            http://www.prettyprinter.de/module.php?name=PrettyPrinter
            http://blog.djh5e.org/wp-content/jsf.html
            http://jsbeautifier.org/
            http://javascript.about.com/library/blformat.htm
            http://zhanzhang.ip.la/jsformat/

            Хотя, согласен с тем, что лучше было бы найти исходник этой гадости.
            Ответить
      • Хотел в качестве примера привести код _uWnd.alert(), но потом передумал публиковать эту простыню.
        Ответить
        • я его получил по почте, и оно ужасно
          Ответить
          • Значит, на почту приходит версия до правки комментария. Так это же личка получается. Сначала пишем, что хотим сказать автору комментария лично, потом исправляем на то, что хотим сказать всем.
            Ответить

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