<MyRusakov.ru />

Программирование на JavaScript с Нуля до Гуру 2.0

Программирование на JavaScript с Нуля до Гуру 2.0

Данный курс научит Вас программировать на языке JavaScript, который крайне желательно знать любому уважающему себя программисту. Курс состоит из 8 разделов, в которых Вы с нуля освоите этот язык и сможете создавать самые разные программы для самых разных задач любой сложности. В курсе Вы получите всю необходимую теоретическую часть, а также увидите массу практических примеров, в том числе, и из моей практики.

Дополнительно, почти к каждому уроку идут упражнения.

Помимо самого курса Вас ждёт ещё 5 бесплатных ценных Бонусов: «Библиотека jQuery», «Защита JavaScript-кода от копирования», «Решение упражнений из курса», «HTML для начинающих» и «CSS для начинающих».

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Что такое загрязнение прототипа в JavaScript?

Что такое загрязнение прототипа в JavaScript?

При установке пакетов из npm в консоли периодически отображаются предупреждения о том, что тот или иной javascript пакет загрязняет прототип. Что это означает и чем это может быть опасно сейчас в данной статье я вам и расскажу.

Начнем с того, что, для примера, переопределим встроенный метод push объекта Array своим собственным методом, при этом в коде мы сохраним ссылку на оригинальны метод, чтобы в конце вызвать его. Сделаем, мы это для того чтобы у конечного пользователя не возникли ошибки. Код далее:

// сохраняем ссылку на оригинальный метод
var _push = Array.prototype.push;

// определяем свой собственный метод
Array.prototype.push = function( item ) {

    // перед выполнением метода, выполняем некую операцию, 
    // например выведем в консоль некоторое значение
    console.log( 'некоторое значение' );

    // вызываем оригинальный метод
    _push.apply( this, arguments );

    // выполняем некоторую операцию после вызова оригинального метода.
    if( this.length > 1000 ) {
        console.warn( 'может быть здесь что-то не так' );
    }
}

Вся суть примера выше, сводится к тому, что JavaScript очень гибкий язык, поэтому, вы можете в собственном коде переопределять любой встроенный метод или же добавлять к существующему типу свои методы. Это плюс. Но с другой стороны это и минус, так в любой сторонней библиотеке (NodeJS), может быть встроена дополнительная, отнюдь далеко не безвредная функциональность.

Например, представим что вы установили через пакетный менеджер npm какую-то библиотеку, которая Вам необходима для разработки приложения. Эта библиотека имеет зависимости от сторонних разработчиков, в одной из которых может происходить загрязнение прототипа функции того же объекта Array. Теперь при каждом вызове метода push, код в этом поддельном методе может собирать любую доступную информацию на Вашем ПК, например, в том числе пароли, коды доступа, в общем много чего.

В результате чего вся Ваша система, и не только ваша, если кодом будут пользоваться другие, становится уязвима к различного рода атакам.

Поэтому данная статья призвана обратить Ваше внимание на такие, далеко не простые, но тем не менее важные вещи, касающиеся безопасности при разработке на NodeJS.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.