Ссылка: Знаете ли вы из чего состоит ваше приложение?

Задумывались ли вы когда-нибудь из чего состоит ваше приложение? Из каких библиотек? Видели ли вы их исходный код? Каждый раз, когда я смотрел на граф зависимостей, то понимал, что  фактически мы ничего не контролируем. Миллионы строк библиотечного кода. Что лежит во всех этих библиотеках? Нет ли там чего “интересного”? И действительно, иногда в них можно что-то найти. Чтобы подпитать своего внутреннего параноика рекомендуем к прочтению Рассказ о том, как я ворую номера кредиток и пароли у посетителей ваших сайтов

Пару слов о Content Discovery

Небольшая заметка о таком явлении как content discovery. В очередной раз наткнулся на такую проблему в одном из проектов и решил написать об этом. Пост будет бесполезен тем, кто в курсе как проводится аудит безопасности, но для меня, как для разработчика ПО в свое время эта штука стала откровением.

В информационной безопасности content discovery называют технику поиска скрытых ресурсов, преимущественно в web-приложениях. Впервые я столкнулся с таким явлением несколько лет назад, когда ко мне обратились знакомые и сказали, что у них стали пропадать клиенты. Это была небольшая компания, у них был отдел продаж и маленький одностраничный веб-сайт, где потенциальные клиенты оставляли свой номер телефона. Затем менеджеры отдела продаж перезванивали клиенту и совершали сделку. Так вот, с какого-то момента клиенты, пришедшие на сайт оказывались обработаны конкурентами до того, как им позвонит менеджер. Поначалу подозревали сотрудников, но затем я решил взглянуть на исходный код сайта. Выяснилось, что по урлу /clients (или что-то такое, точно не помню) без всякой аутентификации были доступны клиенты оставившие заявку за несколько часов. Этот урл дергался CRMкой и новые клиенты перекидывались в базу CRM.

На тот момент мне было непонятно, как можно было обнаружить этот путь на сайте, ведь он нигде не фигурировал — ни в sitemap.xml, ни в robots.txt ни где либо ещё. Про content discovery я ничего не знал, поэтому немного подумал и забил(к тому же проблема оказалась решена). Как оказалось есть способы поиска таких скрытых ресурсов. Давайте посмотрим что можно спрятать и как это можно найти.

 

Читать дальше →

Скрипты и песочницы в JVM

Довольно распространенная ситуация, когда приложение требует кастомизации, но это невозможно выполнить одними только настройками, а модификация исходного кода затруднительна или же отсутствует возможность обновления с необходимой частотой. Примером такой проблемы может быть, к примеру, вычисление комиссии по сложным правилам или же формирование кастомного запроса в биллинг на основе профиля абонента и тому подобное. В этом случае можно воспользоваться Java Scripting API (JSR-223) и выразить логику через изменяемые в рантайме скрипты. Более того, при наличии вменяемого DSL или API, полномочия изменения и настройки скриптов можно переложить на админов, аналитиков и тд. В этом посте мы бы хотели рассказать об эволюции одного приложения, которое активно использует скриптинг в своей работе — с чего начинали и к чему это привело.

 

Читать дальше →