Илья Шкура
EN UK RU

Заметки · Проверьте своё приложение

Три проверки, которые можно сделать в своём приложении.

Каждая идёт от настоящей проблемы, найденной в приложении, собранном с ИИ. Делайте их в своём приложении, с аккаунтами, заведёнными для этого, а всё, что касается денег, — в тестовом режиме, чтобы ни с одного настоящего клиента не списали деньги и никому не ушло письмо.

Две минуты

Может ли один аккаунт открыть чужие данные?

В демонстрационном магазине любой новый аккаунт мог прочитать имена и адреса гостей по номеру заказа.

Вся история этой проблемы →
  • Заведите два аккаунта, A и B. Под A создайте что-то личное: заказ, счёт, бронирование. Под B откройте это по адресу или номеру. Должен быть отказ.
  • Теперь сделайте то же самое с записью без владельца, например с заказом, сделанным без входа, или с черновиком. Откройте её под B, а потом ещё раз без входа.
  • Если номера в адресе идут подряд, попробуйте несколько соседних с вашим.
  • Если что-то открылось, задайте тому, кто собирал приложение, один вопрос: «Какие функции или серверные маршруты читают данные с полными правами и что делает каждый из них, когда поле владельца пустое?»

Пять минут

Может ли возврат быть больше заказа?

В том же магазине на заказ за €29,99 можно было записать возврат €500, и покупателю приходило об этом письмо.

Вся история этой проблемы →
  • Найдите каждое место, где записывается возврат: страницу в админке, кнопку «mark as refunded», обработчик события Stripe charge.refunded, автоматизацию, которая записывает возвраты в таблицу.
  • Введите сумму больше заказа. Её отклоняют ещё до сохранения или только сообщением на странице?
  • Сделайте по одному заказу два частичных возврата, которые вместе превышают заплаченное.
  • Откройте форму возврата в двух вкладках и отправьте обе одновременно.
  • После каждой попытки посмотрите на три вещи: заказ, сумму возвратов за месяц и письмо, которое получил покупатель.

Около часа

Совпадает ли тариф в приложении со Stripe?

В демонстрационном портале подаренный тариф, приостановка, передача и незавершённое удаление оставляли карту платить дальше.

Вся история этой проблемы →
  • Выпишите все способы, которыми в вашем приложении может поменяться тариф, кроме покупки и отмены. Вспомните админку, подаренный тариф, купон, приостановку или блокировку, передачу аккаунта другому человеку, его удаление и всё, что может сделать ваша поддержка.
  • В тестовом режиме сделайте каждое из них с аккаунтом, который платит. Потом откройте этого клиента в кабинете Stripe. Если ваше приложение говорит Free, приостановлен или удалён, а Stripe всё ещё показывает дату следующего платежа, с этой карты спишут деньги.
  • Чтобы увидеть само продление, не дожидаясь конца месяца, используйте тестовые часы Stripe (test clocks): они переводят тестовую подписку вперёд во времени.
  • Попробуйте уйти как клиент в каждом состоянии: когда аккаунт приостановлен, сразу после передачи и когда аккаунт больше, чем разрешает ваш бесплатный тариф. Может ли клиент отменить тариф в приложении? Даёт ли это сделать страница оплаты Stripe?
  • Если код писал кто-то другой, задайте ему один вопрос: «Перечислите все места, где меняется тариф, и для каждого скажите, что происходит с подпиской Stripe». Если хоть где-то ответ вроде «ничего», это и есть дыра.

Что-то прошло?

Напишите, что нашли, или пришлите ссылку на код. Отвечаю по почте, звонок не нужен. Эти три — только то, что можно проверить вручную; проверка проходит каждую роль и каждый путь.

sebeksmail@gmail.com