вторник, 14 марта 2017 г.

Секретный чат

После разоблачений Сноудена для многих важным стал вопрос конфиденциальности переговоров. Под сомнением оказались декларации создателей всех известных мессенджеров. Гарантий недоступности переписки нет никаких. Разработка собственных корпоративных систем для малого и среднего бизнеса недоступна по стоимости. Доступным вариантом является создание скрытого чата средствами G Suite.


Идея заключается в возможности открыто публиковать Standalone-скрипты Google в Интернете. Передав ссылку на этот скрипт получателю информации мы можем через HtmlService скрипта передавать адресату любую нужную информацию. Добавив сюда же поле ввода текста мы можем и получать информацию от адресата. Разослав ссылку на скрипт всем участникам беседы мы можем создать свой собственный чат. Вот как это выглядит:
Переписка хранится в кэше скрипта CashService. По умолчанию хранение данных в кэше составляет 10 минут с возможностью увеличения до 6 часов. То есть, максимум через 6 часов Google сам уничтожит всю переписку.


Для ограничения доступа к чату каждому пользователю создается уникальная ссылка. Уникальность ссылки достигается дополнительным параметром, то есть, доступ к чату осуществляется по ссылке вида
“https://script.google.com/…/exec?param=134acca73762bf814c69d9d3b5c9bbcd#%23”.
Все что слева от “?” это адрес публикации скрипта. Справа результат хэш-функции, который формируется по имени пользователя и времени запуска чата. Пара значений Пользователь/Ссылка тоже хранится в CashService, то есть все ссылки действуют только в течении одного сеанса и не более 6 часов. При входе в чат ссылка из кэша уничтожается. То есть, все ссылки являются одноразовыми.


Принцип действия прост. Есть функция startChat(). Эта функция генерирует пары Пользователь/Ссылка, помещает их в кэш и рассылает ссылки пользователям. Само письмо маскируется под обычную рассылку, например, “ЗАРАБОТАЙ МИЛЛИОН” (ну или "УЗНАЙ КАК УВЕЛИЧИТЬ ПО***ОЙ Ч**Н!!!!"). В сети много различных конструкторов, в которых легко можно сделать письмо, не отличающееся от обычного спама. В письме под картинкой ссылка. Лучше всего помещать ее под той картинкой, которую меньше всего хочется нажать. При нажатии на ссылку запускается скрипт с чатом. При запуске скрипта ссылка проверяется на валидность. Если ссылку запустил другой пользователь или время сеанса истекло, то запускается специальный HtmlService-заглушка, тематика которого соответствует маскировке письма. Чтобы впоследствии ни у кого не возникло сомнений что это обычный спам. В зависимости от потребностей бизнес-процесса вызов функции startChat() можно сделать по таймеру, а можно по необходимости через http-команду (например, вызов этого же скрипта с другим параметром param=start).


Сам HtmlService чата прост до безобразия. Это просто поле текста и поле ввода с кнопкой. При загрузке страницы текст из кэша помещается в поле текста. При нажатии на кнопку текст из поля ввода добавляется к тексту чата в кэше. Также используется таймер. Каждые две секунды браузер обращается к серверу и получает из кэша текст чата.  


Код скрипта здесь. Библиотеку для хэш-функций я использовал эту.


Этот пример полностью функционален, но не является конечным продуктом. Для реализации как минимум необходимо в зависимости от конкретного бизнес-процесса предусмотреть следующие моменты:
  1. запуск нового чата здесь никак не предусмотрен (в примере чтобы запустить чат нужно запустить функцию startChat() из редактора кода);
  2. не реализован свободный выбор участников чата, адресаты жестко прописаны в коде (массив USERS);
  3. весь чат хранится в одной записи кэша, размер которой ограничен 100 килобайт, если переписка предполагается больше по размеру, то необходимо использовать дополнительные записи;
  4. не указано время хранения записей кэша, то есть применяется значение по умолчанию - 10 минут;
  5. необходимо оформить “Заглушку” и тело письма.  

Блог написан на основе реального кейса скрытого управления аффилированными счетами. Стоимость реализации составила 10 тысяч рублей. Реализация благополучно пережила два обыска правоохранительных органов (в лице ОЭБиПК).  

Всем успехов!

5 комментариев:

  1. Спасибо, интересно

    ОтветитьУдалить
  2. Благо дарю, идея интересная.
    Здорова Влад и ты тут )

    ОтветитьУдалить
  3. Вы ищете бизнес-кредит, личные кредиты, ипотечные кредиты, автокредиты, студенческие кредиты, необеспеченные кредиты для консолидации, проектное финансирование и т. Д ... Или просто отказываетесь от кредитов в банке или финансовом учреждении по одной или нескольким причинам? Мы правильные решения для кредита! Мы предлагаем кредиты компаниям и частным лицам с низкой и доступной 2% процентной ставкой. Поэтому, если вас интересует срочный и обеспеченный кредит. Для получения дополнительной информации, пожалуйста, напишите нам сегодня: Via: Elegantloanfirm@hotmail.com.

    ОтветитьУдалить