LINUX.ORG.RU
ФорумTalks

Опять залезли в npm

 ,


1

1

Давно не было ничего нового в рубрике «дурачок-мейнтейнер npm», и вот, наконец, новая порция обсёра. На этот раз пострадал пакет под супер-оригинальным названием «is» (2.7млн скачиваний в неделю!). Злоумышленник получил доступ к аккаунту через банальную хакер-рыбалку…

https://www.heise.de/en/news/Popular-JavaScript-package-is-Malware-through-supply-chain-attack-10499964.html

★★★★★

is

general

    is.a (value, type) or is.type (value, type)
    is.defined (value)
    is.empty (value)
    is.equal (value, other)
    is.hosted (value, host)
    is.instance (value, constructor)
    is.instanceof (value, constructor) - deprecated, because in ES3 browsers, "instanceof" is a reserved word
    is.nil (value)
    is.null (value) - deprecated, because in ES3 browsers, "null" is a reserved word
    is.undef (value)
    is.undefined (value) - deprecated, because in ES3 browsers, "undefined" is a reserved word

arguments

    is.args (value)
    is.arguments (value) - deprecated, because "arguments" is a reserved word
    is.args.empty (value)

array

    is.array (value)
    is.array.empty (value)
    is.arraylike (value)

boolean

    is.bool (value)
    is.boolean (value) - deprecated, because in ES3 browsers, "boolean" is a reserved word
    is.false (value) - deprecated, because in ES3 browsers, "false" is a reserved word
    is.true (value) - deprecated, because in ES3 browsers, "true" is a reserved word

date

    is.date (value)

element

    is.element (value)

error

    is.error (value)

function

    is.fn (value)
    is.function (value) - deprecated, because in ES3 browsers, "function" is a reserved word

number

    is.number (value)
    is.infinite (value)
    is.decimal (value)
    is.divisibleBy (value, n)
    is.integer (value)
    is.int (value) - deprecated, because in ES3 browsers, "int" is a reserved word
    is.maximum (value, others)
    is.minimum (value, others)
    is.nan (value)
    is.even (value)
    is.odd (value)
    is.ge (value, other)
    is.gt (value, other)
    is.le (value, other)
    is.lt (value, other)
    is.within (value, start, finish)

object

    is.object (value)

regexp

    is.regexp (value)

string

    is.string (value)

encoded binary

    is.base64 (value)
    is.hex (value)

Symbols

    is.symbol (value)

BigInts

    is.bigint (value)


Ну хорошо хоть он все в один пакет собратл, ане присал по пакету под каждый однострочник

Kolins ★★★★★
()

А вот нефиг зависимости подключать. Нет зависимостей, нет проблем. Не нужны всякие npm-ы и прочая дичь.

vbr ★★★★★
()
Ответ на: комментарий от vbr

Щас побегу исключать mavenCentral из всех своих приложений на Java. Дайте только до ноута добраться…

seiken ★★★★★
() автор топика
Ответ на: комментарий от vbr

А в чём правильность-то, если слабое звено всё равно поставщик дистрибутива компоненты? Сегодня угнали аккаунт от npm, завтра угонят от оф. сайта разработчика…

seiken ★★★★★
() автор топика

library that checks, among other things, whether a value is defined (is.defined), empty (is.empty) or of a specific type (generally via is.type(value, type) or specifically as is.integer, is.bool, is.array etc.).

Мде, звучит как офигенно нужная либа

upcFrost ★★★★★
()
Ответ на: комментарий от Shadow

Там даже include в браузере нет.

Вообще-то есть.

vbr ★★★★★
()
Ответ на: комментарий от seiken

А в чём правильность-то, если слабое звено всё равно поставщик дистрибутива компоненты? Сегодня угнали аккаунт от npm, завтра угонят от оф. сайта разработчика…

Угнать аккаунт Enrico Marino и взломать серверы оракла это угрозы с сильно разной вероятностью.

vbr ★★★★★
()
Ответ на: комментарий от upcFrost

Мде, звучит как офигенно нужная либа

Ну индусы там и не такие корки мочат… лично одного отчитывал за библиотеку типа isWeekend.

bdrbt
()

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

somemong
()
Ответ на: комментарий от bdrbt

Вот isWeekend это кстати вполне полезно если имеешь дело со всем миром сразу. Потому что где-то это сб/вс, где-то пт/сб, а где-то чт/пт. Это как с календарём - пересчёт нашего календаря например в иранский или марокканский писать самому мягко говоря жопно.

upcFrost ★★★★★
()
Ответ на: комментарий от lovesan

Мде, ок, я думал оно с геопривязкой и прочим весельем. Такое не нужно

upcFrost ★★★★★
()
Ответ на: комментарий от Shadow

если скрипт подключать как <script type="module"> то будет import но оно откровенно неудобное и не js-way в файлах появляются импорт-экспорт который как простой скрипт уже нигде не используешь и надо править исходник. Лучше бы стандартизовали <meta src="manifest.json"> где как в вебэкстеншене сразу бы скрипты, стили и иконки страницы можно было задекларировать. А импорты это все из ecmascript перекочевало, но там это оправдано отсутствием html и вообще каких либо других упорядочивающих механизмов, только file by file как в плюсах.

uin ★★★
()
Последнее исправление: uin (всего исправлений: 1)
Ответ на: комментарий от lovesan

Они там все такие. Так что можно даже не говорить про это.

Не то что божественный ЛИШП! Нет софта - нет проблем! :P

Merlin86
()
Ответ на: комментарий от vbr

Вроде правильнее будет «не нужны всякие JS и прочая дичь». Веб превратили в какую-то сотону, каждый первый считает своим долгом заюзать весь бутстрап, каждый второй - обмазаться сервис-воркерами. Потом потащили это говно в бэк, а потом и на десктоп. Я понимаю, что выпускники вайтишных курсов это дешево, но надо же и меру знать.

leave ★★★★★
()
Ответ на: комментарий от leave

он нужен для плавной анимации, эффектов, подгрузки комментариев при прокрутке. сейчас зумеры и представить не могут, что в нулевых чтобы увидеть новые коменты дрочили клавишу f5… прямо как тут… а еще это экономит мобильный трафик… как то во всем мире нет безлимита и ты покупаешь 10,20,30 гигов за большие деньги

rtxtxtrx ★★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от Kolins

там давно встроенные методы для всего есть. автор из умирающей либы решил профит получить. не фортануло

rtxtxtrx ★★★
()
Ответ на: комментарий от upcFrost

Мде, звучит как офигенно нужная либа

Такое не только лишь в JS бывает нужно. В некоторых нетипизированных языках подобная хня из каробки присутствует, а вот для тех у кого не присутствует, приходится костылить свое посконное.

anc ★★★★★
()
Ответ на: комментарий от vbr

Угнать аккаунт Enrico Marino и взломать серверы оракла это угрозы с сильно разной вероятностью.

Вероятность разная, но это только по причине того, что количество «Enrico Marino» на этом глобусе сильно превосходит количество ораклов.

anc ★★★★★
()
Ответ на: комментарий от seiken

Это типа твой локальный сервачок не хуже серверов оракула защищён?

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

anc ★★★★★
()
Ответ на: комментарий от bdrbt

Ну индусы там и не такие корки мочат… лично одного отчитывал за библиотеку типа isWeekend.

А вот это как раз годная тема! Выходные дни с учетом переносов праздников в каждом году разные.

anc ★★★★★
()
Ответ на: комментарий от rtxtxtrx

что в нулевых чтобы увидеть новые коменты дрочили клавишу f5… прямо как тут…

Не дрочил в нулевых и не дрочу сейчас F5, ЧЯДНТ?

anc ★★★★★
()
Ответ на: комментарий от leave

Вроде правильнее будет «не нужны всякие JS и прочая дичь».

JS мне нравится. У него, конечно, есть идиотские решения из исторического наследия, но в целом там ничего критически плохого нет, и с этим можно жить. А современные фишки у него очень хорошо продуманы и это пожалуй самый приятный динамический язык на мой взгляд по совокупности.

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

А что выпускники, выпускники делают то, чему их учат. Мантра о том, что переиспользование кода это самое важное в этом мире, это же не выпускники вайтишных курсов это придумали. Так-то всё по уму - мелкие и крупные библиотеки, оттестированные миллионами обезьян, сам лучше не напишешь, всякие там tree shaker-ы для оптимального бандлинга. Как бы по отдельности каждая идея выглядит здраво и придраться как будто бы не к чему.

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

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 1)

Есть и более страшные вещи вроде как плагины и расширения для IDE с закладками. К тоже на интервью сейчас тестовые задания часто дают со зловредным кодом, надеясь что разраб запустит напрямую, что впрочем имеет место быть во многих случаях.

anonymous_sama ★★★★★
()
Последнее исправление: anonymous_sama (всего исправлений: 1)
Ответ на: комментарий от anc

А вот это как раз годная тема!

Капец ты наивный… там что-то вроде такого в библиотеку оформлено было

function isWeekend(date) {
  const day = date.getDay(); // 0 - воскресенье, 6 - суббота
  return day === 0 || day === 6;
}

export isWeekend
bdrbt
()
Ответ на: комментарий от vbr

JS мне нравится

А с приходом TypeScript, так вообще конфетка стала

А итог получился странным. Может так и надо.

Да, проблема только в том что в npm кто угодно может что угодно положить. Это как GitHub, по сути

Просто надо проверять либу на серьёзность, прежде чем к себе тянуть, и нет проблем

Merlin86
()
Ответ на: комментарий от Merlin86

Да, проблема только в том что в npm кто угодно может что угодно положить. Это как GitHub, по сути

Просто надо проверять либу на серьёзность, прежде чем к себе тянуть, и нет проблем

Проблем много. Что значит «проверять либу на серьёзность»? Я импортирую одну библиотеку, использую 5% её функционала, при этом эта библиотека импортирует ещё тысячу библиотек. Абсолютно типичная история. И как это всё проверять на серьёзность? Я не знаю, думаю, и никто не знает. При каждом обновлении всё может меняться.

Единственный разумный способ использовать библиотеки без явных минусов (кроме трудозатрат) это стягивать конкретную версию, удалять оттуда всё лишнее, изучать оставшийся код, адаптировать под себя и забывать про обновления, перекладывая на себя эту задачу. Т.е. не использовать библиотеку, а просто вытащить куски интересующего кода из библиотеки, который ты мог бы и сам написать, но решил сэкономить время. Но это явно не то, как используются библиотеки в проектах.

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

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от Merlin86

Да, проблема только в том что в npm кто угодно может что угодно положить. Это как GitHub, по сути

Не у всего «что угодно» миллионы скачиваний в неделю.

seiken ★★★★★
() автор топика
Ответ на: комментарий от rtxtxtrx

а еще это экономит мобильный трафик… как то во всем мире нет безлимита и ты покупаешь 10,20,30 гигов за большие деньги

двести метров жаваскрипта
грузят текста триста байт
я элита программистов,
не какой-то разъ^Hдолбай

xmlhttprequest появился в нулевых. Черт с ним, оставьте ради подгрузки комментов. Бесконечный скроллинг - наверное, никто не смог пока нормально реализовать, течет у всех, фтопку.

leave ★★★★★
()
Ответ на: комментарий от vbr

е всегда получается, да и что считать зависимостями - ядро линукса зависимость?

ls node_modules

leave ★★★★★
()
Ответ на: комментарий от leave

ты ничего не смыслишь уже. fetch лет 15 вместо xmlhttprequest используют. а современные реакты/вуи жрут в среднем 30 мегабайт на вкладку (сам код фреймворков весит до сотни килобайт, речь о памяти, необходимой для среднего приложения). просто преувеличиваешь проблему от того, что в ней никогда и не разбирался. компонентная система просто удобнее. а сотни мегабайт лишь справедливы для бэкенда на ноде и электронов. смешал все в кучу. даже классифицировать сложно твое утверждение они толи полностью ложное, толи частично

rtxtxtrx ★★★
()
Ответ на: комментарий от rtxtxtrx

страничка ЛОГИНА на https://x.com - 125 мегабайт

reddit - 200 мегабайт

outlook - 412 мегабайт

gmail - 500

засуньте свой жаваскрипт в туда, откуда вы его достали, пожалуйста.

И не заливай про бэкенд, пожалуйста. Регулярно встречаюсь со «сборкой» фронта. 24 метра родного говнеца, которое подсасывает через «удобную компонентную систему»:

$ yarn install --no-bin-links
[2/4] Fetching packages...
[###########################################################################################--------------------------------------------------------] 860/1391
......
$ du -sh node_modules/
253M	node_modules/

Ах да, оно «собирается» полчаса на Ryzen 7 7730U/40Gb. ЖСеры смогли превзойти плюсы, это ли не показатель.

leave ★★★★★
()
Ответ на: комментарий от leave

это ж ржачно. ты ресурсы, потребляемые вкладкой, те количество оперативной памяти как-то пытаешься связать с технологией… отключи расширения типа блокировщика рекламы, удивишься… господе, а чтобы приложение на qt собрать нужно гиг чего-то скачать, а само приложение будет 10-20-50 мегабайт весить… а на андроид гига 3-4. это даже критикой не назвать.

rtxtxtrx ★★★
()
Ответ на: комментарий от rtxtxtrx

Ты путаешь SDK с ненужностями вроде сабжа.

p.s. отключил блокировщик на гмыле. Вместо 510 метров стало 663.

leave ★★★★★
()
Ответ на: комментарий от leave

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

rtxtxtrx ★★★
()
Ответ на: комментарий от leave

Ах да, оно «собирается» полчаса на Ryzen 7 7730U/40Gb. ЖСеры смогли превзойти плюсы, это ли не показатель.

Ну да, рассказывай сказки

У нас фронт, node_modules 664M, сборка генерирует примерно 8.000 статических страниц и занимает 15 мин.

Бек, node_modules 849M, сборка занимает 2 мин.

Какие, нафиг, пол часа?

Merlin86
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)