Роберт Емельянов, для того чтобы давать советы, нужно знать много о специфике данных, частоте их обновления, объёмах итд итп. Если там данные такие, что после первого слива контора может закрыаться то это одно, а если данные устаревают черех 3 часа - другое. В вопросе совершенно непонятен уровень угроз итд итп.
Серебрянной пули всё равно нет. Понятие утечки слишком абстрактно, его сложно формализовать и выразить в измеримых показателях. Это нужно делать с учётом специфики данных, специфики работы сотрудников компании итд итп.
В любом случае, когда данные критичны, то их не хранят в единственной шаре, доступной всем сотрудникам. И для защиты применяют сурьёзные методы.
Просто пример сурьёзного решения, из числа таких, что могут применяться в какой-нить банковской сфере. Для доступа к данным надо поднять VPN до некоторого сервера. Через него доступ по RDP на сервер, на котором нужно поднять ещё один VPN и с него ещё один RDP. На обоих серверах скриншотятся все действия. Прямого сетевого доступа нет. Максимум - можно скриншотить самому картинки, но много не наскриншотишь. Ещё и можно данные отдавать через специальные интерфейсы, которые логгируют обращения, а также маскируют то, что не нужно соответствующему сотруднику.
Например, специалисту первой линии поддержки может быть не нужно знать суммы платежей (по крайней мере точные), только проверять что они обработаны или что пользователю ушло уведомление по почте/смс. Можно не показывать номер телефона или номер паспорта. Курьеру сумму заказа и его содержание знать не нужно, ему нужен только номер, число упаковок и адрес куда доставить. Итд итп.
Именно так и защищают данные.
Вообще, вопросы такого характера обычно появляются не тогда, когда есть какая-то внятная политика защиты данных, а когда случился какой-нить внутренний скандал и надо срочно изобразить деятельность, в которой бы скандал был якобы преодолён. Проблема в том, что обычно скандал второй раз не возникает никогда, а случается что-нибудь совсем другое. Или через столько лет, что все уже всё забыли и на любые политики безопасности все уже снова наплевали.
Эту защиту легко обойти, достаточно просто скачивать файлы с такой интенсивностью, какую проявляет вяло перебирающий файлики человек.
Тем более что специфика неясна. Если там 500 файлов, то их можно просто по 50 штук в день за две недели слить. Автоматизироанно идентифицировать это как злонамеренное действие - не такая уж и тривиальная проблема.
Progrimer, если в событии не прилетает достаточно информации, то, скорее всего, придётся где-то запоминать предыдущий тип контента каждого сообщения. Чтобы точно знать, какой он был и на что он изменился.
Может быть и дохнущий БП монитора. Помню, был один монитор, которому немного продлили жизнь, прикладывая к БП поролоновую губку, намоченную холодной водой.
Если пользователям не даётся доступ напрямую в s3, а вместо этого доступом к файлам управляет собственный сервис, то можно все вопросы с доступом решать на уровне своего сервиса.
При этом можно не прокачивать сами файлы через этот сервис, если использовать presigned url с ограниченным сроком действия.
Но как уже написали в ответах, покупка готового s3-сервиса может быть дорогим решением, дешевле поднять свой s3 на базе minio, ceph или других решений. Но придётся потрудиться с его настройкой и сопровождением.
На гитхабе вагон реализаций эмуляции whatsapp web, можно пытаться искать активно обновляемые и популярные. Также есть коммерческие сервисы, которые подобное предоставляют.
Но это всё рискованно и ненадёжно. И лучше не использовать на личном аккаунте и ценном номере, завести под это отдельную сим-карту, которую не жалко выбросить.
Правильнее плясать от поставщика, искать с удобными ценами/условиями. У любого массового поставщика обычно есть готовые компоненты как для on-premise bitrix, так и для облачного bitrix24.
БФЛ это банкротство? Что-нибудь типа коллекторской деятельности? Коллекторам вообще тяжело живётся. Там часто дохлые номера или уже новый владелец номера, при отправке на почту/мессенджеры/соцсети шквал нажатий пользователями "это спам", низкие рейтинги и блокировки отправителей...
НИКОГДА!!! нельзя удалять по принципу message.message_id - 1. Никто не гарантирует, что id всегда будут идти последовательно и что между сообщениями не вклинится что-то ещё. Эффекты подобных действий могут быть самыми непредсказуемыми. Вместо этого надо запоминать id отправляемых сообщений и явным образом удалять их.
Не бывает "ломанного" Selenium. И никакого "эмулятора браузера" там нет, там самый настоящий браузер, "web driver". Бывает undetected web driver - тот самый браузер, которому патчат те части, которые выдают его запуск в headless-режиме.
Надо понимать, что Selenium изначально создавался вовсе не для того, чтобы обманывать сайты. Его делали для автоматизированного тестирования сайтов при их разработке.
Надёжно отличить curl и postman нельзя вообще никак, потому что эти инструменты делают http-запросы в полно соответствии со стандартами, и если указать там все нужные заголовки по аналогии с браузером, то отличить их от браузера будет нельзя.
Даже Cloudflare ломают, тем более что и Cloudflare работает на статистике запросов, потом показывает капчу и в случае её прохождения выставляется кука, с которой всё опять работает, в том числе для автоматизированной обработки.
Так что сделайте что-нибудь, чтобы это было не особо легко, но слишком глубоко заморачиваться не имеет смысла.
Если ваш бизнес может прогореть от того, что кто-то спарсит ваши данные, значит, это была изначально плохая бизнес-идея.
Передавать исходнй код - большая глупость. Если уж передавать что-то зашифрованное, то уже скомпилированный код. Тут при его взломе хотя бы не получат исходный код в чистом виде.
Такой механизм тоже подвержен атаке. Надо найти, где хранится ключ расшифровки, и подсунуть свой вместо. А дальше уже пихать свой изменённый код, который будет зашифрован уже другим ключом.
Также если скачиваемые файлы кладутся локально и затем запускаются, то их можно перехватывать на этой стадии.
Небольшой пример из области. Я как-то ломал древнюю программу, которая внутри содержала базу знаний, которую показывала в embedded IE. Файлы извлекались во временный каталог, показывались в браузере и тут же удалялись. Две разных части программы я ломал двумя путями:
1. Часть ломалась запретом удаления файлов (в NTFS так можно сделать).
2. Другая часть падала, если не могла удалить файл, но там я просто запустил циклический rsync, который быстро забирал все новые файлы.
А дальше все собранные файлы я скриптами обрабатывал-переименовывал и конвертил в chm-файл, который в винде очень удобно и быстро можно смотреть штатным просмотрщиком справки.
Системы защиты хапускаемого кода разрабатывают годами. Там хранят ключ в зашифрованном виде, растащенный по разным файлам, в разных частях кода вставляют всякие проверки, которые ломаются от изменения любого бита ключа. Делаются отложенные проверки, когда проверка выпадает не сразу, а через неделю-месяц после взлома. Иногда применяются остроумные решения, как в хрестоматийной истории с картриджами приставки, в которой контроль оригинальности был по стартовой картинке, которую пираты привыкли менять на свою собственную. Итд итп. Тут за вечер-другой не сделать лучше, чем сделали программисты толстых крупных бизнесов, при том, что и там защиту совсем даже не раз ломали.
И всё это может требовать нехилых таких вложений сил и времени, которые может быть полезнее потратить на написание более полезного и даже прибыльного проекта. Так что следует начать с целеполагания и модели угроз.
Например, если это очередная запускалка небольших игрушек, то предлагаю просто забить. Лучше сделать больше игрушек и увеличить пользовательскую базу, чем бороться с теми умниками, которые будут это пытаться поломать. Эффективность усилий будет никакая. Ну, можно что-нить простое сделать, чтобы большинство простейших попыток отсечь, и на этом хватит.
xfnxfn, ну вот пример задачи, в которой можно многое попробовать.
Считать с диска список файлов: имя, размер, дата изменения - и сделать список из него. Сделать сортировку по имени, по размеру, по времени изменения несколькими способами (пузырьком, слиянием итд). Заодно тренировка по алгоритмам.