Безопасность
Что защищает запись
Ваши заказы, адреса ваших клиентов и ваши деньги хранятся здесь. Эта страница рассказывает, что мы создали для их защиты, что работает прямо сейчас и где это заканчивается.
Разделение
Один бизнес никогда не видит другой
На этом держится всё остальное, поэтому мы делаем это дважды, а проверяет за нас компьютер.
Две стены между бизнесами, а не одна
Каждая запись помечена бизнесом, которому она принадлежит, и каждый запрос нашего сервера к базе данных ограничен бизнесом, который его сделал. Под этим сама база данных держит ту же стену, со своим правилом на каждой таблице, которая хранит бизнес-записи. Поэтому одной ошибки в приложении недостаточно, чтобы её пересечь.
Стену проверяет компьютер, а не память человека
Автоматический тест читает действующую базу данных, находит каждую таблицу с бизнес-меткой и падает, называя по имени любую, у которой нет своего правила. Мы пересчитываем то, что закрыто, а не полагаемся на предположения, и список исключений пуст.
Перед выпуском мы проверяем разделение на двух бизнесах
Когда мы добавляем новый адрес, к которому может обращаться приложение, он получает тест, который входит как один бизнес и пытается прочитать данные другого. У синхронизации, цен и имён сохранённых файлов есть свои отдельные тесты.
Целостность
Запись нельзя незаметно переписать
Когда заказ идёт не так, история служит доказательством. Она устроена так, что никто, включая нас, не может изменить её у вас за спиной.
В историю можно только добавлять, и каждая строка запирает предыдущую
Каждая строка истории несёт отпечаток предыдущей строки, поэтому строку нельзя незаметно изменить или удалить, не разорвав цепочку. Сама база данных блокирует любое изменение или удаление, а наш сервер отказывается запускаться, если эта защита отсутствует.
Платежи никогда не редактируются
Чтобы исправить ошибку, мы добавляем новую строку, которая отменяет старую. Мы никогда не меняем старую. Что и когда было записано, остаётся видно: в этом весь смысл истории платежей.
Ссылки для подписи создаёт наш сервер
Ссылка для подписания документа срабатывает один раз, её нельзя угадать, и через заданное время она перестаёт действовать. Её создаёт наш сервер. Приложение на телефоне никогда не строит её само.
Пока данные в пути, и пока они хранятся
Куда уходят данные
Cloudflare находится между интернетом и сервером, с которым говорит приложение. На нём стоят наши собственные правила блокировки, и он притормаживает тех, кто шлёт слишком много запросов слишком быстро. Наш собственный сервер применяет те же ограничения ещё раз, уже за ним.
Зашифровано в пути, везде
Всё, что передаётся между телефоном и нами, идёт по HTTPS: он шифрует данные, чтобы их не прочитал никто посередине. Действующий сайт также отправляет браузеру инструкцию: если браузер уже был у нас, он никогда не должен возвращаться к незашифрованному соединению. Запросы доходят до нас через Cloudflare, а не напрямую к нашему серверу.
Файлы остаются в одном регионе
Фото, документы и подписи хранятся в файловом хранилище с одним фиксированным регионом, и это восток Северной Америки. Это верно для каждого бизнеса, где бы он ни работал. Когда действующий сервер запускается, он проверяет эту настройку и отказывается работать, если регион не задан или установлен на «авто».
Мы никогда не храним ваш пароль
Мы не храним ваш пароль и не можем восстановить его для вас. Мы храним зашифрованную версию (Argon2), которую нельзя превратить обратно в ваш пароль: достаточно, чтобы проверить его при входе, но никогда не достаточно, чтобы его прочитать. Также есть ограничение на то, сколько раз кто-либо может пытаться войти, зарегистрироваться или сбросить пароль за короткое время.
На телефоне
Телефон тоже входит в то, что мы защищаем
Телефон оставляют на заднем борту, одалживают ученику и передают через прилавок. То, что мы здесь сделали, рассчитано именно на это, а не на офисный стол.
Необязательная блокировка самого приложения
То, что вы уже вошли, не должно отдавать весь бизнес тому, кто возьмёт телефон в руки. Блокировка приложения запрашивает собственную блокировку экрана телефона или отпечаток пальца перед открытием. Она выключена, пока вы её не включите, и мы предлагаем её только на телефоне, у которого уже настроена блокировка экрана.
Ключи для входа остаются в собственном заблокированном хранилище телефона
Приложению приходится хранить несколько приватных элементов на телефоне, например пропуск, который держит вас в системе. Оно кладёт их не в обычные файлы приложения, а в хранилище ключей Android: это заблокированное хранилище, которое защищает аппаратура самого телефона.
Непрерывность
Резервные копии, инциденты и вывод ваших данных
Закрытая копия базы данных, которая хранится вне сервера
Каждый час мы делаем полную копию рабочей базы данных. Перед тем как сохранить копию, её закрывают шифрованием, и задача не оставляет незакрытых копий: она проверяет, что закрытый файл действительно закрыт, и только потом удаляет незакрытый. Затем она проверяет собственный перечень содержимого копии, отправляет её в отдельное хранилище, к которому у самого приложения нет данных для входа, и считывает обратно, чтобы убедиться, что копия дошла. База данных ведёт ещё и непрерывную запись каждого изменения в момент, когда оно происходит, и эта запись тоже копируется за пределы сервера, поэтому возврат данных на место не ограничен последней целой копией. Фотографии, файлы PDF и изображения подписей копируются в то же отдельное хранилище. Старые копии удаляются по установленному расписанию в обоих местах. Скажем прямо: это отдельное хранилище представляет собой второе место у той же самой компании-хранилища, а не вторую компанию.
Мы возвращаем резервные копии на место, чтобы доказать, что они работают
Резервная копия, которую никто ни разу не возвращал на место, остаётся надеждой, а не планом. Поэтому мы берём настоящую копию рабочей базы данных, загружаем её в запасную базу и проверяем, что записи действительно на месте, и только потом выбрасываем запасную. В том числе мы открываем уже сохранённую закрытую копию, а не только что сделанную. То же самое мы проделали с файловым хранилищем: каждый восстановленный файл сверили с отпечатком, записанным в момент копирования. Каждая проверка записана и датирована. Вот чего эти проверки не доказывают, и это важнее того, что они доказывают: мы никогда не собирали сервис заново на новых машинах, никогда не проигрывали непрерывную запись изменений вперёд до выбранного момента, никогда не возвращали резервную копию в рабочую базу данных и никогда не замеряли полное восстановление от начала до конца. Именно поэтому мы не публикуем никакой цели по восстановлению.
Письменный план на случай, если что-то пойдёт не так
Если что-то идёт не так, мы следуем письменному плану, а не придумываем на ходу. Шаги такие: оценить масштаб, остановить распространение, завершить у всех сеансы и отключить ссылки на оплату и доступ сотрудников, сменить наши секретные ключи, сохранить историю и проверить, что её не изменили, затем оценить ущерб и сообщить пострадавшим. Мы обещаем сообщить вам без лишнего ожидания. Мы не публикуем фиксированный срок, потому что не доказали, что можем его соблюдать.
Ваши данные уходят, когда вы захотите
Вы можете скачать копию своего аккаунта прямо из приложения: клиентов, заказы, счета, платежи, чеки, фото, а также PDF ваших счетов и смет. Вы также можете удалить свой аккаунт в приложении. Доступ прекращается сразу, а данные мы удаляем окончательно спустя заданное число дней. Мы намеренно храним историю того, кто что сделал, потому что в эту запись можно только добавлять.
Чего мы не заявляем
Список ниже показывает, чего у нас нет и что мы не обещаем. Если что-то из этого важно для вас, это настоящий ответ. Подумайте об этом, прежде чем доверить нам свою работу.
Никаких сертификатов и внешних аудитов. У нас нет отчёта SOC 2, сертификата ISO 27001 и одобрения PCI или HIPAA: это сертификаты безопасности, которые запрашивают крупные покупатели. Никто вне компании не получал плату за попытку взлома. Любой, кто говорит вам иное о Zeus, ошибается.
Никаких обещаний по времени работы или восстановлению. Мы не публикуем ни цифру о том, сколько времени приложение работает, ни цель по скорости восстановления, ни цель по тому, сколько недавней работы может пропасть. Мы не можем поручиться ни за одну из них.
Никаких обещаний идеальной безопасности. Ни одна система не защищена идеально, и страница, которая утверждает обратное, занимается рекламой, а не фактами.
Работа, которую вы делаете офлайн, не резервируется, пока не дойдёт до нас. Изменения, сделанные без сигнала, лежат только на этом телефоне, пока приложение не достигнет сервера. Откройте приложение, когда снова появится сигнал, чтобы оно могло отправить данные.
Сообщение об уязвимости
Если вы что-то нашли, мы предпочли бы услышать это от вас, чем от бизнеса, который работает на этом приложении. Программы вознаграждений и выплат нет, но живой человек даст вам прямой ответ.
Пожалуйста, следуйте этим правилам
- Дайте нам время это исправить, прежде чем рассказывать кому-то ещё.
- Пока вы разбираетесь, не открывайте, не изменяйте и не сохраняйте никакие данные, кроме своих.
- Не заваливайте действующий сайт трафиком, чтобы посмотреть, сколько он выдержит, не направляйте на него автоматические инструменты сканирования и не пытайтесь взломать его, если только мы не дали согласие в письменном виде заранее.
- Расскажите нам, что вы сделали, что увидели, и дайте достаточно деталей, чтобы мы могли это воспроизвести. Даже черновая заметка лучше, чем ничего.
Это те же правила, что и в нашей политике допустимого использования.
Статус этой страницы
Эта страница написана для чтения. Это не договор, и она не обещает ничего, что вы могли бы потребовать от нас в суде. К таким документам относятся условия использования и политика конфиденциальности в нашем пакете правовых документов. Работа над безопасностью не прекращается никогда, поэтому содержимое этой страницы меняется. Если эта страница и те документы когда-либо разойдутся, решающими будут те документы.
Вопросы обо всём этом присылайте на [email protected], а по всему остальному пишите на странице контактов.