+4
На рассмотрении

Рокетбанк надоел спрашивать пароль. А ещё он не распознаёт переводы между счетами.

Timofey Sonny 2 года назад в Россия / Рокетбанк обновлен Михаил Куклин 4 месяца назад 34

Первый момент

Тяну данные из трёх банков - Рокетбанк, Сбербанк и Тинькофф.

И всякий долбаный раз, когда нажимаю кнопочку обновления истории, мне требуется вводить пароль от приложения Рокетбанка (а для остальных нет).

Скажите, пожалуйста, это специфика банка или плагина? Если плагина, нельзя ли спрашивать пореже?:)


Второй момент

У меня в Рокетбанке несколько счетов. Доблестный плагин исправно следит за всеми транзакциями по каждому счёту, но упорно не отдупляет переводы денежных средств от одного счёта другому.

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

Хотя даже в комментарии к транзакции прекрасно написано, откуда и куда ушли деньги:)


Поправьте, пожалуйста.

Люблю ваш сервис)

+1
На рассмотрении

Например, Сбербанк и Тинькоф позволяют авторизировать устройство и их плагины могут сохранить токен авторизации для дальнейшего запуска. Если Рокетбанк не позволяет проводить авторизацию устройства (этого мы не знаем) и вынуждает каждый раз вводить пароль, то мы понимаем автора плагина - недальновидно пытаться сохранять пароль в таком случае.

Оформление переводов тоже на совести плагина. Он может создавать как доходы или расходы, так и переводы явно. В плагине Тинькоф, например, это происходит отдельно в рамках синхронизации сразу после загрузки и обработки полученных операций.

Вы можете поправить плагин Рокетбанка?

Мы нет, к сожалению, так как не являемся клиентами этого банка. Большинство плагинов разрабатываются нашими пользователями.

Плагин Рокетбанка проводит авторизацию устройства. Но всегда (или почти всегда) после входа в официальное мобильное приложение, сессия в плагине сбрасывается и пароль запрашивается снова. Пароль от приложения нигде не хранится из соображений безопасности.

По поводу переводов между счетами: в теории должно работать, но проверить не было возможности, так как у меня только один счет, но такой функционал был реализован. Что бы разобраться что пошло не так, нужно приложить логи для анализа проблемы.

Андрей, по этой версии плагина прислали такой лог с ошибкой. Нужно ли что-то запросить или этого достаточно?

Начинаем синхронизацию депозитов
[ZP] Exception: __ [RSU] setResult called without success

Нет, этого не достаточно. Но автор темы уже прислал полные логи. Отправил правки к плагину.

+1

Суппорт как всегда открещивается от плагина))

Проблема в том что у вас нет хоть какого-то стандарта для плагинов
Вот Андрей решил что не секурно сохранять пин-код, не смотря на все ваши уверения что все безопасно, вот и запрашивает его каждый раз
А многие плагины сохраняют пароль и не парятся

Мне кажется что компромиссом между удобством и параноидальностью будет такое решение:
- давать возможность указать пин/пароль в настройках плагина, поле не обязательное для заполнения
- когда плагину нужен пин/пароль от проверяет это поле в настройках, если оно пустое, то поле запрашивается у пользователя 

И да, меня тоже подбешивает запрос пина, но благо импорт делаю раз в 1-2 недели =)

+1

Пин запрашивается только если его запрашивает Рокетбанк. Т.е. как только банк посчитает, что сессия устарела он запрашивает пароль. Мне тоже не остается ничего другого кроме как запросить пин.

Не сохраняю этот пин нигде (в том числе в логах) что бы в случае взлома приложения злоумышленник не получил доступ к управлению финансами. Ведь по API, которое используется в API можно не только получать данные, но и совершать переводы, платежи и прочее.

Давай попробуем разобратся

В рокете можно зарегать несколько устройств (в нашем случае это офф. приложение и зенмани)
Информация об устройстве сохраняется https://github.com/zenmoney/ZenPlugins/blob/master/plugins/rocketbank/main.js#L667

Для запроса нужен еще и токен. Его получение как раз и требует подтверждение пином https://github.com/zenmoney/ZenPlugins/blob/91ce66d1bb801ebffaf60aedaaf860b947e48ec8/plugins/rocketbank/main.js#L589-L596

Токен сохраняется https://github.com/zenmoney/ZenPlugins/blob/master/plugins/rocketbank/main.js#L612

И так в какой-то момент в зенмани сохранены все данные достаточные для получения информации по счетам и совершения переводов, и они актуальны пока пользователь не войдет в офф приложение

Так что та еще секурность =)
Тогда уж надо не сохранять токен (тогда пин будет запрашиваться при каждой синхронизации)


--------------------------

Выше я описывал кейс для тех кто не боится, для них дать возможность сохранять пин и тогда токен будет получаться автоматически

Просто по возможности рассмотри и такой вариант

На самом деле это безопаснее, чем хранить пин. Расскажу почему.

Привязав устройство и получив токен действительно можно совершать любые операции. Но есть одно "но". Это можно делать только до того момента как будет выполнена авторизация на другом устройстве (например, заход в оф. приложение). С этого момента даже имея токен ничего сделать не получится.

А если у нас будет храниться еще и пин, то в любой момент злоумышленник сможет создать новый токен, причем совершенно незаметно для владельца карты.

Получается, что чем чаще приложения запрашивают пин, тем безопаснее, так как времени у злоумышленника остается меньше.

Понятно что токен генерится на пользователя, а не на устройство

Но я к примеру использую Рокет как хранилище быстрых денег и захожу в офф приложение раз в месяц
> Это можно делать только до того момента как будет выполнена авторизация на другом устройстве 
Поэтому такое обоснование звучит как "Один раз не ..."
Мне кажется что зловред который знает где хранятся данные в ЗМ и для чего их можно использовать уведет деньги за минуту

Итог
1) Я надеюсь что хранилище ЗМ безопасно =)
2) Исходя из пункта 1, лично я постоянный запрос пина считаю излишним
3) Как вариант предоставить пользователю возможность сохранить пин на свой страх и риск

Разумеется, для пользователя наверное удобнее, если он не будет вводить пароль. Но если у него уведут деньги, кто будет отвечать? )

А если их уведут сейчас, то кто будет отвечать?

Если их уведут сейчас, то последствий будет меньше (после первой же транзакции пользователь зайдет в приложение и доступ будет закрыт).

В общем, я все равно такой функционал реализовывать не буду. Если разработчики ZM захотят, они смогут сами его добавить ))

Скрипт сможет очистить всю карту и счета за секунды, вы еще телефон не успееете вытащить из кармана)

Я и не прошу его писать) Я просто за стандартизацию и одинаковое поведение плагинов)

> А многие плагины сохраняют пароль и не парятся

А про какие "многие" плагины идёт речь? Хранить пароль, действительно, несколько пренебрежительно к безопасности.

Так ваше внутренне хранилище безопасно, или нет? =)))

Все данные шифруются средствами ядра ОС (как IOS, так и Андроид) и к алгоритмам шифрования доступа нет даже у нас.

Какие ещё слова нужно написать здесь, чтобы это стало яснее ясного? 🙂
https://support.zenmoney.ru/forums/2-baza-znanij/topics/272-o-bezopasnosti-podklyucheniya-k-bankam/

Я читал) 

Тогда к чему фраза 
>> Хранить пароль, действительно, несколько пренебрежительно к безопасности.
https://support.zenmoney.ru/forums/1-podderzhka-dzen-mani/topics/866-roketbank-nadoel-sprashivat-parol-a-eschyo-on-ne-raspoznayot-perevodyi-mezhdu-schetami/#comment-3449

Если есть возможность его не хранить, внутренний параноик каждого должен советовать его не хранить 🙂 Если другой возможности нет, полагаемся на механизмы шифрования Google/Apple.

+1

Как-то изначально ничего про параноика не было)

https://github.com/zenmoney/ZenPlugins/search?l=XML&p=1&q=password&type=&utf8=%E2%9C%93
Сколько плагинов сохраняют пароль и используют его только 1 раз для создания сессии?

Давайте попробуем разобрать ваш плагин

Пароль обязателен в настройках - https://github.com/zenmoney/ZenPlugins/blob/master/plugins/tinkoff/main.js#L28
почему бы здесь https://github.com/zenmoney/ZenPlugins/blob/master/plugins/tinkoff/main.js#L45 не запрошивать его через ZenMoney.retrieveCode?
И сохранять Ид сессии? https://github.com/zenmoney/ZenPlugins/blob/master/plugins/tinkoff/main.js#L73
Когда сессия стухнет, плагин снова запросит пароль

И тогда работа плагина тинькова будет идентична работе плагина рокета

----

Но лично на мой взгляд - все равно можно спиздить (если такое все таки возможно) deviceId + sessionId и творить всякую чертовщину )

Вот если бы deviceId https://github.com/zenmoney/ZenPlugins/blob/master/plugins/tinkoff/main.js#L36
генерилось бы приложением, было бы статичным для пары телефон+плагин, никуда бы не сохранялось и использовало какой-то внутренний уникальный ID (https://medium.com/@ssaurel/how-to-retrieve-an-unique-id-to-identify-android-devices-6f99fd5369eb), то возможно было бы побезопаснее

1:0 в вашу пользу! 🙂

Поиск оптимальных решений сообща - то, к чему мы стремимся. Одними только своими силами мы многое можем упустить, но всё равно стараемся и будем стараться делать, что можем. Чем больше таких взглядов и помощи со стороны, тем лучше Дзен-мани станет в итоге.

+1

Все что выше это ради фана, я пользуюсь плагинами и не очень парюсь что меня сломают злобные американские хакеры

А припекло у меня только из-за того, что плагины у вас ведут себя по разному. А это из-за того, что нет стандартизации и контроля.
И каждый разработчик может лепить то, что хочет

Переводы заработали, спасибо!

Если с паролем что-то реально сделать, было бы хорошо:)

Подтверждаю проблему не работающих переводов между счетами

Как собрать лог для детализации?


Загружаем профиль пользователя
Найдено вкладов: 0
Обрабатываем список счетов. Найдено счетов: 2
Обрабатываем счет: {"id":"5d9954017d5d6a09d602b4d53cd02454","title":"Рокетбанк сберегательный","type":"checking","instrument":"RUB","balance":0,"syncID":["7442"]}
Обрабатываем счет: {"id":"ea93d694cd487d8acdf9246daa6857c9","title":"Рокетбанк Счёт","type":"checking","instrument":"RUB","balance":0,"syncID":["4733"]}
Начинаем синхронизацию аккаунта 5d9954017d5d6a09d602b4d53cd02454 с даты 29.12.2017, 18:13:20
Запрашиваем список операций: страница 1
Загрузили страницу 1 из 0
Начинаем синхронизацию аккаунта ea93d694cd487d8acdf9246daa6857c9 с даты 29.12.2017, 18:13:20
Запрашиваем список операций: страница 1
Загрузили страницу 1 из 0
Загружаем список карт. Найдено карт: 1
Обрабатываем карту: {"id":"12f90868ec5d73127177dd67fc2fa140","title":"Рублевая карта","type":"ccard","instrument":"RUB","balance":4932.09,"syncID":["4900"]}
Начинаем синхронизацию аккаунта 12f90868ec5d73127177dd67fc2fa140 с даты 27.01.2018, 18:02:13
Запрашиваем список операций: страница 1
Загрузили страницу 1 из 3
Транзакция #117492038 уже была ранее обработана (27.01.2018, 18:02:13)
Начинаем синхронизацию депозитов

> Загрузили страницу 1 из 0

Выглядит будто произошла сетевая ошибка и не удалось загрузить данные из банка. 

возможно ли при этом получить данные о транзакциях по карте, но иметь проблемы с переводом?

Что можно сделать, чтобы проверить?

Ошибка возникает при каждой синхронизации?

Может был разовый сбой у Рокетбанка? 

ошибки при синхронизации нет. Она проходит корректно и, если были транзакции, то они добавляются. Ошибку наблюдаю когда пытаюсь перевести наколенные деньги на «накопительный» счёт. (Вкладка «Обзор» и указан ем суммы по кнопке «Другая»

https://drive.google.com/open?id=1Q7eUCeDTHekOQrDlAkoGS4646XUb9D7k


Ааа, понял. Тут все правильно - переводы через плагин не поддерживаются. Нужно сделать перевод через официальное приложение, а потом через синхронизацию обновить данные.

Не думаю, что в ближайшее время займусь этим. 

Есть 2 счёта.
Пытаюсь выполнить перевод с Рокетбанк карта на Рокетбанк сберегательный.

Получаю ошибку как на скриншоте

+1

некропост, но всё же. На данный момент подключить счёт к синхронизации с рокетбанком не получается. Плагин умер?

Сервис поддержки клиентов работает на платформе UserEcho