Разработчики серверной JavaScript-платформы Node.js опубликовали корректирующие выпуски 13.8.0, 12.15.0 и 10.19.0, в которых устранены три уязвимости:...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=52319
Самую опасную уязвимость не убрали: .js
Толсто
Зато правда.
нет
> TLS-сервераА что, нода ещё и сама себе https? Я как-то привык считать, что такое ПО живёт за nginx/haproxy/varnish/whateverelse.
> А что, нода ещё и сама себе https?внезапно!
> Я как-то привык считать, что такое ПО живёт за nginx/haproxy/varnish/whateverelse.
а они к нему обращаются исключительно через /dev/astral ?
Малыш, ты уже почти взрослый, и тебе пора знать правду - Дед Морозом был наш сосед, сантехник дядя Вася. Поэтому не пришел в этот новый год он не потому, что не было зимы, а потому что помер от цирроза еще в апреле.P.S. хуже что она же сама себе еще и веб-клиент. С совершеннейшим п-цом - начиная от прибитых гвоздем внутри и не позволяющих никак себя пооверрайдить единственно-верных CA (можно только полностью отключить вообще проверку валидности, разумеется, если код позволяет это делать), и заканчивая тем что 302 - это "фатальная ашибка".
в чем проблема использовать из ноды более удобный веб-клиент? Если дефолтный не катит.
Можно использовать любой веб-клиент. Однако они обычно писаны непонятно кем, самые популярные из них практически не поддерживаются и они наследуют проблемы собственно базового клиента из пакета ноды. Уже упоминали, что тот же 302 клиент по-умолчанию не держит - нужно писать самому обвязку. Потом внезапно оказывается, что и gzip-deflate нужно самому руками распаковывать. Потом оказывается, что для поддержки http2 тебе нужно использовать другой модуль - и сразу возникает проблема согласования, когда ты не знаешь какой протокол поддерживает хост. Опускаешься на уровень ниже, в сокеты, где вручную хукаешься на ивенты согласования, проверяешь версию протокола и передаешь сокет нужному модулю.В итоге ты пишешь километры кода, который в 90% случаев работает на магии, плюёшь на всё и используешь какой-нибудь node-libcurl, который прекрасно хендлит все эти проблемы, а на стороне JSa тебе прилетает готовенький ответ. Если интересно, можно почитать обсуждение https://github.com/nodejs/node/issues/19393
> магии, плюёшь на всё и используешь какой-нибудь node-libcurl, который прекрасно хендлит
> все эти проблемы, а на стороне JSa тебе прилетает готовенький ответ.фак... а что, так было можно?!
> фак... а что, так было можно?!Конечно, вот либа если что https://www.npmjs.com/package/node-libcurl Я собственно на неё переключился, когда в проекте появилось требование поддерживать FTP )
>> фак... а что, так было можно?!
> Конечно, вот либа если что https://www.npmjs.com/package/node-libcurl Я собственно на
> неё переключился, когда в проекте появилось требование поддерживать FTP )блин, теперь бы донести эту новость до "разработчиков" на nodejs :-( [бегло глянув примеры - мде, тут копипастой не отделаться, тут надо здоровенные куски кода переделывать]
Я-то наивно думал, что они этой хренью пользуются с горя, потому что curl им недоступен, а он, оказывается, в одном клике лежал.
> блин, теперь бы донести эту новость до "разработчиков" на nodejs :-( [бегло
> глянув примеры - мде, тут копипастой не отделаться, тут надо здоровенные
> куски кода переделывать]Ну если программисты заранее не подумали написать обёртку над внешней библиотекой - тогда будет весело. Мой опыт в ноде подсказывает, что оборачивать нужно любой не твой код - никогда не знаешь что случится с библиотекой завтра (особенно в нодежс мире) или как могут поменяться требования. Я вот в проекте только один файл перелопатил при внедрении этой либы - зато выкинул сразу половину кодовой базы )
> Я-то наивно думал, что они этой хренью пользуются с горя, потому что
> curl им недоступен, а он, оказывается, в одном клике лежал.Раньше с нативными либами было хуже - у ноды не было стабилизированного апи и они частенько ломались. Сейчас уже нет особых проблем обернуть что угодно в нодовую библиотеку и использовать. Тем более, что в самых последних версиях уже и WebAssembly завозят.
Типичный комментатор опеннета. Вместо того, чтобы читать документацию и искать нормальные модули, он готов только изливать желчь на js.> Однако они обычно писаны непонятно кем
Если вы не знаете популярных разработчиков на nodejs это ваши проблемы. Много разработчиков curl вы знаете?
> самые популярные из них практически не поддерживаются
Не поддерживается только `request` из популярных. А остальные - got, node-fetch, axios и т.д. вполне поддерживаюся, умеют обрабатывать и компрессию, и перенаправление. Если вам нужны формы, или вебсокеты, то это всё легко подключается отдельными модулями. Используете только то, что вам нужно и никакой магии.
Непонятно, только зачем я всё это пытаюсь объяснить анону, который первый раз в глаза js видит, и не разобравшись, пытается что то вразумительное делать.
> Типичный комментатор опеннета. Вместо того, чтобы читать документацию и искать нормальные модули, он готов только изливать желчь на js.Типичное анонимовский триггер на ключевые слова в посте без осмысления самого поста. Попрошу всё-таки разлепить свои глазики и прочесть мой комментарий внимательно - в каком месте я собственно излил желчь на сам язык? А ещё я приложил ссылку, по которой ясно видно, что не только я один вижу проблему в NodeJS по части клиентских запросов.
> Если вы не знаете популярных разработчиков на nodejs это ваши проблемы. Много разработчиков curl вы знаете?
Популярные - это те, которые пишут вещи типа left-pad? В таком случае я таких не знаю, да и знать не хочу. И разработчиков libcurl я тоже не помню, но эта библиотека ещё ни разу не подвела меня ещё задолго до NodeJS. Воткнул node-libcurl, cама хендлит протоколы, сама распаковывает, сиди и данные собирай.
> Не поддерживается только `request` из популярных.
К чести сказать, есть форк request от создателей Postman. Однако пользоваться библиотекой (или её форком), из-за которой даже в стандартную либу ноды пришлось добавлять хаки (https://github.com/request/request/issues/3176), мне не очень хочется.
> axios
Это те ребята, которые 2 года игнорили сообщение об уязвимости (https://www.reddit.com/r/javascript/comments/cp5qhm/askjs_th.../) ? Юзал я эту либу на фронте, но на беке - чур меня.
> вполне поддерживаюся, умеют обрабатывать и компрессию, и перенаправление. Если вам нужны формы, или вебсокеты, то это всё легко подключается отдельными модулями. Используете только то, что вам нужно и никакой магии.
Всякие формы и вебсокеты это другая история, а мне с бекенда на бекенды надо запросы делать. Вот я хочу HTTP/2 из коробки - где оно в request, axios и node-fetch? Если найти либу, которая 1 и 2 версию умеет (например, fetch-h2) - то можно ужаснуться от той содомии, что творится в исходниках. Прямо переизобретение того же curl. Ну ладно, взял, подключил, используешь. А потом прилетает задача на добавление FTP - и приехали, бегом искать ещё одну либу и склеивать это всё во франкенштейна. Даже браузеры сто лет умеют это из коробки, а в ноде нужно обмазываться тонной библиотек ради простенького запроса в интернет.
Я вот пришёл из нативного мира и удивлён, что в 2020 году в ноде нельзя просто сделать универсальный сетевой запрос одним методом. А ещё я больше удивлён, что есть люди, которых устраивает качать малофункциональные либы непонятно от кого в мегабайты весом и они даже защищают такое положение вещей.
> Непонятно, только зачем я всё это пытаюсь объяснить анону, который первый раз в глаза js видит, и не разобравшись, пытается что то вразумительное делать.
Ух какой самокритичный анонимус попался. Свечку держал, за спиной стоял? Я хотя бы исходники да issues библиотек и ноды периодически просматриваю и вам рекомендую так делать.
> Я вот пришёл из нативного мираТеперь всё понятно. Вы прост не привыкли к модульной системе. Можно написать библиотеку, которая будет из коробки поддерживать вообще все сетевые запросы. Вот только зачем? Вот вам надо, а другой сотне разработчиков не надо. Но при этом либа всё равно будет тянуть 90% ненужного им кода. Философия ноды как раз в модульности, вы по кирпичикам собираете то, что именно вам нужно.
> не только я один вижу проблему в NodeJS по части клиентских запросов
В issue по ссылке есть другая ссылка на документ, в котором чётко описаны проблемы потенциальной реализации fetch. В любом случае всегда можно взять любую другую реализацию.
> Вот я хочу HTTP/2 из коробки - где оно
Для http2 в ядре ноды есть модуль. Берите и используйте. Тем более стабилизировали уже давненько.
> Популярные - это те, которые пишут вещи типа left-pad?
Какая-то истеричка один раз удалила свой модуль, и вы теперь всегда будете это вспоминать? Если для вас нода характеризуется только этим, не пишите на ней.
> непонятно от кого в мегабайты весом и они даже защищают такое положение вещей
js реализации традиционно достаточно много весят, от этого никуда не деться. И писать огромные библиотеки-комбайны, которые делают всё, это тоже плохой подход. Есть ряд сильных разработчиков ноды, которые пишут неплохие модули, например, Синре Сорхус, tj головачук, Маттео Коллина и т.д.
--
Если вы не умеете на ноде прогать, зачем истерить тут в комментах, что в ноде всё плохо? Судя по описанной вами задаче вам реально проще тот же курл подключить, если вам нужно кучу протоколов поддерживать.
> Вот только зачем?затем чтобы не зависеть от миллиона вложенных зависимостей, где-нибудь на стотысячной глубине подтягивающих leftpad.
> Какая-то истеричка один раз удалила свой модуль, и вы теперь всегда будете это вспоминать?
да, потому что "какая-то истеричка" обрушила вам всю инфраструктуру, удалив совершенно ненужную примитивнейшую хрень на две строки, но понапиханную в зависимости миллиона модулей.
> Если вы не умеете на ноде прогать, зачем истерить тут в комментах, что в ноде всё плохо?
затем что я не могу, к сожалению, просто взять и перестрелять ее "разработчиков". И вынужден пользоваться продуктами их "труда", состоящими из копипасты копипиасты, потому что поляна, опачки - загажена, и конкурентов у 6ешплатного выкидыша нет и не будет уже.
И вот выясняется, между делом, что они могли бы, запросто, использовать для http нормальную библиотеку - но в первом же подвернувшемся им под пальцы вопросе на стековерфлоу - был пример "нативной" неработоспособной уже в трех сантиметрах от стола разработчика.
Вы надеетесь, при таком подходе, на любовь и обожание, что к продукту, что к его адептам?
Можно, для работы за корп прокси, но не все сторонние библиотеки это поддерживают
Ну как это нельзя?На конкретный запрос есть опция ca, глобально есть переменная среды NODE_EXTRA_CA_CERTS
> Ну как это нельзя?
> На конкретный запрос есть опция ca, глобально есть переменная среды NODE_EXTRA_CA_CERTSнету. Уже несколько лет как макаки все это поломали нахрен, и никто толком не знает, в каком месте сломано:
https://github.com/electron/electron/issues/10257 - типикал стори.
> а они к нему обращаются исключительно через /dev/astralЕсть несколько вариантов для обмена данными между фронтендом и бэкендом, шифрование трафика между ними - это нонсенс.
> С совершеннейшим п-цом - начиная от прибитых гвоздем внутри и не позволяющих никак себя
> пооверрайдить единственно-верных CA (можно только полностью отключить вообще проверку
> валидности, разумеется, если код позволяет это делать)Странно. И как же в моём проекте до этого откровения без особых проблем корректно валидировались и, собственно, продолжают валидироваться сертификаты от внутреннего CA...
живет.
А так ssl в ноде юзаем ток в дев моде. Чтобы у себя не лепить прокси лишние.
> А так ssl в ноде юзаем ток в дев моде. Чтобы уа когда таки надо проверить валидность сертификата?
Забиваете хрен?
В деве не нужно проверять сертификат или ты думаешь парень за соседним столом внедрил свой серт и слушает дев трафик?))))Да даже если он так делает значит так надо может он кул кацкер. На проде там все закрыто совсем не нодой.
а, блин, не так понял - то есть дальше тестовых схем у вас это чудо и не смотрит.> На проде там все закрыто совсем не нодой.
и тут мы узнаем, что она не умеет http redirect...
Чтобы устранить уязвимость в яваскрипт, нужно сперва устранить явпскрипт. Полумеры не работают. Гори в аду, Айк.
> С какой целью интересуешься, кодераст?макаке сегодня обидно было!
Ничего. Он сполна выместит свою ненависть на неизвестных ему рандомных человеках.
Теперь электрон станет работать быстрее?
> Теперь электрон станет работать быстрее?Станет. На серверах груснокомпаний. На локальных компвх станет тормозить ещё больше, в этом- то и причина впопулярности.
>Теперь электрон станет работать быстрее?Нет, сынок, теперь оперативки надо докупить и проц новый.