Аккаунт может создать ограниченное количество ботов (по-моему не больше 20, но могу ошибаться). Для массового сервиса маловато. Плюс создание ботов придётся автоматизировать через клиентский API.
Поэтому лучше пусть пользователи сами себе ботов создают.
С точки зрения безопасности лучше не выходить в интернет вообще :) А так пишем пользовательское соглашение с отказом от ответственности, это стандартная практика.
Shimpanze, не надо делать new foo, весь смысл этой магии в том, что вызывается статиеский метод - метод класса, а не объекта - при несуществующем объекте. А реальный new вызывается в статическом методе.
0x80070005, возможно токен там и есть, просто называется как-нибудь неочевидно и возможно хранится не в окончательном виде, а, допустим, как base64 реального, или c перестановкой символов, или разбитым на части в разных ключах... Всё ради того, чтобы в глаза не бросалось и нельзя было легко найти.
0x80070005, токен мог быть получен при первом вызове приложения и положен в local storage, а следующие попытки запуска приложения просто забирают его из local storage и сервер не опрашивают.
Естественно, его могут обфусцировать, чтобы было непросто найти.
Сервис должен быть не "для базы данных", а реализовавать какую-то функциональную бизнес-логику. А при такой постановке вопроса всё выглядит так, будто бы решили сделать сервис для хитровывернутого выполнения SQL-запросов.
bbquite, так и не надо использовать как строку. Для float 123 и 123.00 это одно и то же. Для денег float плох ещё из-за неточности его математики, что приводит к казусам типа https://0.30000000000000004.com/
wg никто никогда не считал неопределяемым. У него киллер-фича в другом: простая имплементация в ядре без юзерспейса и шифры, которые эффективно работают практически везде. Как стал протокол часто применяться - научились определять.
Zettabyte, redis - изначально тот же memcached (kv-хранилище) с его же интерфейсом, который хранил копию данных в памяти также и на диске. Но вроде с тех пор умеет всякие очереди, кластерность итд. Я его кроме как замены memcached сто лет назад и то в тестовых целях не пользовал, так что не знаю.
Конечные автоматы тут это просто про то, что для упрощения разработки не программист куда-то у себя в боте складирует, какой user_id в каком состоянии, а библиотека это делает сама, вызывая разные обработчики в зависимости от предыстории обмена сообщениями с пользоватлем. Это хорошо, когда делаешь пошаговые взаимодействия (например, когда надо задать серию вопросов и выдать результат обработки), и довольно плохо, когда надо хранить персистентно информацию о пользователе, потому что все данные являются свойствами текущего состояния, а не пользователя (например, бот знакомств в начале регистрации в сервисе спрашивает у пользователя его город/возраст/предпочтения). Но это можно совмещать (например, с помощью FSM зададим серию вопросов, а итог запишем уже в свою базу).
Формально это действительно конечный автомат (граф состояний, между которыми перемещается пользователь в процессе взаимодействия), но с практической точки зрения это то же самое, что можно было бы написать на if-then-else и глобальном словаре с id пользователя с id в качестве ключа. Просто так разрабатывать сильно неудобно. FSM намного удобнее даже для тривиальных взаимодействий, позволяя делать короткие функции, обслуживающие отдельные шаги.
Что касается сохранения данных, то aiogram позволяет в качестве хранилища состояний использовать не только Memory storage, но и файл на диске либо базу данных.
Роберт Емельянов, для того чтобы давать советы, нужно знать много о специфике данных, частоте их обновления, объёмах итд итп. Если там данные такие, что после первого слива контора может закрыаться то это одно, а если данные устаревают черех 3 часа - другое. В вопросе совершенно непонятен уровень угроз итд итп.
Серебрянной пули всё равно нет. Понятие утечки слишком абстрактно, его сложно формализовать и выразить в измеримых показателях. Это нужно делать с учётом специфики данных, специфики работы сотрудников компании итд итп.
В любом случае, когда данные критичны, то их не хранят в единственной шаре, доступной всем сотрудникам. И для защиты применяют сурьёзные методы.
Просто пример сурьёзного решения, из числа таких, что могут применяться в какой-нить банковской сфере. Для доступа к данным надо поднять VPN до некоторого сервера. Через него доступ по RDP на сервер, на котором нужно поднять ещё один VPN и с него ещё один RDP. На обоих серверах скриншотятся все действия. Прямого сетевого доступа нет. Максимум - можно скриншотить самому картинки, но много не наскриншотишь. Ещё и можно данные отдавать через специальные интерфейсы, которые логгируют обращения, а также маскируют то, что не нужно соответствующему сотруднику.
Например, специалисту первой линии поддержки может быть не нужно знать суммы платежей (по крайней мере точные), только проверять что они обработаны или что пользователю ушло уведомление по почте/смс. Можно не показывать номер телефона или номер паспорта. Курьеру сумму заказа и его содержание знать не нужно, ему нужен только номер, число упаковок и адрес куда доставить. Итд итп.
Именно так и защищают данные.
Вообще, вопросы такого характера обычно появляются не тогда, когда есть какая-то внятная политика защиты данных, а когда случился какой-нить внутренний скандал и надо срочно изобразить деятельность, в которой бы скандал был якобы преодолён. Проблема в том, что обычно скандал второй раз не возникает никогда, а случается что-нибудь совсем другое. Или через столько лет, что все уже всё забыли и на любые политики безопасности все уже снова наплевали.
Эту защиту легко обойти, достаточно просто скачивать файлы с такой интенсивностью, какую проявляет вяло перебирающий файлики человек.
Тем более что специфика неясна. Если там 500 файлов, то их можно просто по 50 штук в день за две недели слить. Автоматизироанно идентифицировать это как злонамеренное действие - не такая уж и тривиальная проблема.
Поэтому лучше пусть пользователи сами себе ботов создают.
С точки зрения безопасности лучше не выходить в интернет вообще :) А так пишем пользовательское соглашение с отказом от ответственности, это стандартная практика.