|
Обмен данными с мобильным приложением. Нужен совет. Советы :) | ☑ | ||
---|---|---|---|---|
0
fisher
19.05.21
✎
10:27
|
1. Как лучше, XDTO в json или структуры в json и почему?
2. Как обеспечить гарантированное сжатие пакетов? 3. Как решить вопрос безопасности? Токены какие-нить прикрутить? Стоит ли с JWT заморочиться? В ветку призывается Garykom и все желающие :) |
|||
16
fisher
19.05.21
✎
10:47
|
(8) Ну, как запасной вариант пойдет, если ничего лучше не придумается из дешевого. Тупо хэш от айдишника девайса плюс дата - пойдет в принципе. Никто это ломать и даром не будет. Но было бы интересно рассмотреть и варианты получше.
|
|||
17
Василий Алибабаевич
19.05.21
✎
10:47
|
(0)
1. Зависит от передаваемых данных. Все по разному для обменов по планам обмена и отдачи (например) с ЦБ на МП какого-нибудь замороченного отчета. 2. Стандартное ХранилищеЗначения вполне качественно сжимает данные. Не пакеты, а именно данные. 3. Что такое безопасность? Утечка данных? Их подмена? |
|||
18
H A D G E H O G s
19.05.21
✎
10:49
|
(14) примитивная немного модифицированная xor-ка с солью и хешем отпугнет 99.0 % любопытных. Ключ, конечно, формируем кодом, а не храним в строковой переменной.
|
|||
19
pechkin
19.05.21
✎
10:51
|
(18) ключ каждый раз разный передается или 1 на всю жизнь клиента?
|
|||
20
H A D G E H O G s
19.05.21
✎
10:53
|
(19) 1 на всю жизнь.
|
|||
21
fisher
19.05.21
✎
10:54
|
(15) Хм... Необходимость каждый раз скачивать схему - это минус. На структурах я могу реализовать обратно совместимые версии api. С wsdl так не выйдет?
(17) 1. И каков характер зависимости? 2. Да, вариант... И заодно "в лоб" данные будет невозможно просмотреть. 3. Невозможность послать запрос на получение данных с неавторизованного устройства |
|||
22
H A D G E H O G s
19.05.21
✎
10:54
|
(19) это простейшее шифрование с закрытым ключом, без изысков.
|
|||
23
pechkin
19.05.21
✎
10:54
|
(20) тогда можно просто гуид выдать на сервере и не заморачиваться
|
|||
24
Kassern
19.05.21
✎
10:54
|
(19) некоторые сервисы дают 2 ключа, один временный (месяц-два) другой нужен, чтобы получить новый ключ. Когда первый заканчивается, по второму получаешь новый комплект ключей и работаешь.
|
|||
25
H A D G E H O G s
19.05.21
✎
10:56
|
(21) скачиваешь каждый раз, когда возникла ошибка xdto преобразования, что говорит, что формат поменялся.
|
|||
26
H A D G E H O G s
19.05.21
✎
10:56
|
(23) и?
|
|||
27
pechkin
19.05.21
✎
10:57
|
(26) ты же все время передаешь один и тот же токен. зачем тогда сложности - пусть будет гуид.
полученный гуид уже проверяем по базе. чтоб сложнее было перехватить: хттпс + пост |
|||
28
Garykom
гуру
19.05.21
✎
10:57
|
||||
29
fisher
19.05.21
✎
10:58
|
(25) Т.е. ты за XDTO? Других неудобств нет?
|
|||
30
Энштейн 1С
19.05.21
✎
10:59
|
(0) Интересно какими данными обмениваешься с мобильным приложением по содержанию?
|
|||
31
Kassern
19.05.21
✎
10:59
|
(29) какой объем данных планируется передавать, сколько запросов в секунду будет?
|
|||
32
Василий Алибабаевич
19.05.21
✎
10:59
|
(21) "И каков характер зависимости?"
Например можно с сервера отдавать готовый ТабличныйДокумент. Он сериализуется и его можно затолкать в фабрику. А можно отдавать голые данные и потом сам отчет строить уже в МП. Что может сэкономить трафик. Причем состав "голых данных" может быть произвольным и тут уже фабрика будет тормозом. |
|||
33
Kassern
19.05.21
✎
10:59
|
(31) если это небольшая поделка, то и нет смысла так заморачиваться
|
|||
34
pechkin
19.05.21
✎
10:59
|
(30) торговые представители же, то бишь прайс и заказы
|
|||
35
fisher
19.05.21
✎
11:00
|
(28) Это будет явно избыточно. Придется же поддерживать идентичные метаданные, не?
|
|||
36
H A D G E H O G s
19.05.21
✎
11:00
|
(27) я никуя не понял про гуид, но мне пофиг.
Https - это обмен рукопожатиями, что несколько печально на gprs. Включи vpnи поработай с https сайтами. |
|||
37
pechkin
19.05.21
✎
11:00
|
апи обмена конечно должно быть отвязано от метаданных
|
|||
38
Garykom
гуру
19.05.21
✎
11:01
|
(32) Если на обоих концах 1С то имеет смысл сначала передавать "готовый ТабличныйДокумент"
Далее если будет тормозить то допилить, просто заранее в архитектуре предусмотреть возможность допилки |
|||
39
H A D G E H O G s
19.05.21
✎
11:01
|
(29) нет. Быстро, просто, ненапряжно.
|
|||
40
Энштейн 1С
19.05.21
✎
11:03
|
(39) Да нет, я не про техническую сторону вопроса спрашиваю, а какие бизнес процессы автоматизируются чтобы передавать из 1С в мобильное приложение
|
|||
41
fisher
19.05.21
✎
11:03
|
(39) Тогда попробую взять за основной вариант. Тем паче давно хотелось с XDTO плотно поработать.
|
|||
42
Garykom
гуру
19.05.21
✎
11:04
|
(35) Не обязательно идентичные но с ними проще
Имена объектов могут не совпадать, а вот реквизиты должны Можно "свою фабрику" для трансформации написать чтобы и реквизиты перефигачить, банально в Структуру/Соответствие исправить, обратно в JSON и затем штатно в объект Можно свою сериализацию/десериализацию на простых типах для своих составных с обоих сторон Короче сам думай как у тебя вариант |
|||
43
Энштейн 1С
19.05.21
✎
11:04
|
(41) Чем обмениваешься с мобильным приложением? Какие бизнес-процессы используются для обмена 1С и мобильным приложением?
|
|||
44
Василий Алибабаевич
19.05.21
✎
11:05
|
(21) "3. Невозможность послать запрос на получение данных с неавторизованного устройства"
Нужно предусмотреть авторизацию устройства. И тут уже зависит от степени паранои. Можно с какой то периодичностью прописывать на устройства суррогат сертификата. И его отправлять параметром с каждым запросом. Есть вероятность напороться на "протухший" сертификат. Можно с какой-то периодичностью запрашивать "отпечаток" устройства и сверять с эталоном. |
|||
45
fisher
19.05.21
✎
11:06
|
(42) Не. Мне такие приседания не по вкусу. XDTO железнодорожней, хоть и больше бойлерплейта.
|
|||
46
fisher
19.05.21
✎
11:07
|
(43) Честно - лениво отвечать. Это не суть важно и вряд ли в итоге принесет полезную мне инфу.
|
|||
47
Широкий
19.05.21
✎
11:07
|
Формат: Данные в структуру, структуру в хранилище значения
|
|||
48
Василий Алибабаевич
19.05.21
✎
11:11
|
(47) Видимо самый оптимальный для 1С вариант. Но теряется смысл использования WEB-Сервисов. Остается один сервис с двумя операциями "ПринятьДанные" и "ОтправитьДанные". Никакого разделения на операции, никакого интуитивно понятного API... Правда оно уже и так считается устаревшим.
|
|||
49
pechkin
19.05.21
✎
11:11
|
(48) тестирование такой лабуды многократно усложняется
|
|||
50
Энштейн 1С
19.05.21
✎
11:12
|
(46) Судя по тому, как старательно ты обходишь стороной описание автоматизируемых бизнес-процессов и заботишься о безопасности, рискну предположить, что речь идет о персональных данных
|
|||
51
stopa85
19.05.21
✎
11:12
|
1. Дело вкуса, мне http-сервисы нравятся больше.
2. Не знаю. 3. Идеально - это авторизация по сертификатам на уровне web-сервера. Но есть баги в мобильной платформе и у меня не взлетело. Пока юзаю так: SSL соедиение (безопастность соединения) + web-сервер проверяет совпадает ли хеш токена, который прислал клиент, с хешами из базы данных. Уже дальше логин/пароль на уровне 1С:Предприятия |
|||
52
Garykom
гуру
19.05.21
✎
11:13
|
(47) это не избавит от преобразования объектов
и если на другой стороне таких объектов (метаданных) нет что делать? |
|||
53
Василий Алибабаевич
19.05.21
✎
11:13
|
(49) Попробуй потестировать HTTP POST.
|
|||
54
fisher
19.05.21
✎
11:13
|
Резюмируя. Начну с этого:
1. XDTO в JSON 2. Инфу паковать в хранилище значения со штатным сжатием. Возможно сразу подумаю о возможности разбиения пакетов. Вполне вероятно, что захочется и фоточками обмениваться. 3. Токен в виде хэша от айдишника устройства, который будет солиться датой. |
|||
55
fisher
19.05.21
✎
11:14
|
(48)(51) SOAP я даже не рассматриваю. Через http-сервисы собираюсь.
|
|||
56
Энштейн 1С
19.05.21
✎
11:15
|
(55) через https делай, дефакто это уже стандарт, раз уж упоминал аж криптозащиту
|
|||
57
Василий Алибабаевич
19.05.21
✎
11:15
|
(52) Для простых типов все будет нормально. Для объектных данных возможно заюзать фабрику. Как я и писал в (17)
|
|||
58
fisher
19.05.21
✎
11:16
|
Хотя погоди, wsdl - это ж SOAP. Значит мы выше с HADGEHOGs друг-друга не поняли.
|
|||
59
fisher
19.05.21
✎
11:19
|
Я хочу через http-сервисы, просто сериализацию делать не по "ручной" схеме со структурами, а описать ее через XDTO
|
|||
60
pechkin
19.05.21
✎
11:20
|
упаковку лучше на уровне веб сервера делать
|
|||
61
Василий Алибабаевич
19.05.21
✎
11:22
|
(60) Оно сможет паковать при отправке данных МП. А кто будет паковать при отправке с МП в ЦБ?
|
|||
62
H A D G E H O G s
19.05.21
✎
11:25
|
Я надеюсь, все понимают, о чем речь.
Автор, если тебе пофиг на то, что твои данные кто-то посмотрит, но тебе важно, чтобы их никто не изменил - просто добавь к данным соль и от всего набора данных+соль сгенери хеш sha256 к примеру и добавь в пакет. На 2 стороне снова сгенери всю эту лабуду и сравни хеши. На уровне типового стандартного https это решается всем многообразием красок сертификатов с удостоверяющими центрами и самоподписью и прочей бабуйней. Автор, если тебе важно, чтобы данные никто не смотрел - шифруй их. Это наиболее просто сделать xor-кой, которая отпугнет 99% мамкиных хакеров. Закрытый ключ будет храниться на сервере и на МП, если МП не распространяется свободным доступом - то и похер. Но и добавить соль и хеш не повредит, если тебя все таки вскроют. На стандартном уровне это делается с помощью https, который прежде чем отправить пакет полезной инфы, устраивает рукопожатие, которое даже при подключении через vpn уже визуально заметно (пара секунд). Как будет на gprs - хз, когда был gprs, https сайтов еще не было. |
|||
63
H A D G E H O G s
19.05.21
✎
11:26
|
(62) Токены - шмокены, гуиды.
|
|||
64
Smit1C
19.05.21
✎
11:30
|
(54)
1. Структурой проще) 2. Фотки у тебя не "ужмуться", только текст 3. А как ты будешь получать первоначальный ID устройства ? |
|||
65
fisher
19.05.21
✎
11:31
|
(62) В шифровании смысла не вижу. Достаточно и того, что тело будет ходить зипованное. А чтобы зная ендпоинт никто не тянул данные - пока остановлюсь на мамкиных токенах.
|
|||
66
H A D G E H O G s
19.05.21
✎
11:33
|
"А чтобы зная ендпоинт никто не тянул данные - пока остановлюсь на мамкиных токенах."
Как ты себе представляешь? |
|||
67
pechkin
19.05.21
✎
11:33
|
(65) если у злоумышленника будет в руках устройство, то токен утекет, через обычный сниффер
|
|||
68
pechkin
19.05.21
✎
11:34
|
(66) в каждом запросе передаешь токен как параметр
|
|||
69
H A D G E H O G s
19.05.21
✎
11:34
|
(68) И?
|
|||
70
Широкий
19.05.21
✎
11:34
|
(48) Да. У меня так почти везде и реализовано. Одна операция, два параметра: Тип (строка), Данные(хранилищеЗначения) -в обратку тоже хранилище
|
|||
71
Энштейн 1С
19.05.21
✎
11:35
|
(59) Автоматическая XDTO капризная к данным, рекомендую использовать ручную схему, есть готовые решения ручного преобразования на Инфостарте
|
|||
72
pechkin
19.05.21
✎
11:36
|
(68) если токен не верный, то ничего не возвращать
|
|||
73
H A D G E H O G s
19.05.21
✎
11:37
|
(72) Ну так бы и сказал, что токен для авторизации.
|
|||
74
pechkin
19.05.21
✎
11:38
|
(73) ну это же бай дефолт назначение токена
|
|||
75
Широкий
19.05.21
✎
11:40
|
По защите - двусторонняя авторизация.
Мобильное устройство генеирует уникальный идишник и запоминает его- это идентфикатор конкретного приложения. Пользователь на мобильнике вводит код и делает первоначальный обмен. На сервере к этому код ищется разрешенная авторизация: админ включает регистрацию по этому простому коду, причем время авторизации ограничено - у меня 5 мин. Если разрешенная авторизация найдена - прописывает идитшник от мобильника и отправляется идишник сервера (который генерируется так же на серваке). В дальнейшем мобильник должен передавать и свой идишник и идишник сервера |
|||
76
pechkin
19.05.21
✎
11:41
|
(75) это называется генерировать ключ сеанса
|
|||
77
fisher
19.05.21
✎
11:46
|
(64)
1. В чем проще? 2. Ясен пень. Фотки приговаривались про разбитие пакетов. 3. Еще не знаю. (66) Хэш от посоленного айдишника устройства. Чем солить еще думаю. Датой, например, как предлагали... |
|||
78
fisher
19.05.21
✎
11:47
|
(73) Да. Токен будет для авторизации.
|
|||
79
H A D G E H O G s
19.05.21
✎
11:47
|
(77) ИД-шники будешь хранить на сервере?
|
|||
80
Smit1C
19.05.21
✎
11:48
|
(75) а зачем ID сервера передавать ?
|
|||
81
fisher
19.05.21
✎
11:48
|
(79) Да. По процедуре начальной инициализации устройства еще думаю.
|
|||
82
Smit1C
19.05.21
✎
11:50
|
(81) в (75) нормальный вариант
|
|||
83
H A D G E H O G s
19.05.21
✎
11:51
|
Токен=Sha256("Мама мыла раму "+НомерРанееВыданногоТокена);
НомерРанееВыданногоТокена=НомерРанееВыданногоТокена+1; Если НомерРанееВыданногоТокена>10000 Тогда НомерРанееВыданногоТокена=СлЧисло(10000); КонецЕсли УстановитьЗначениеКонстанты("НомерРанееВыданногоТокена",НомерРанееВыданногоТокена); НаСервере Для Счетчик=0 По 100000 Цикл Если ПришедшийТокен=Sha256("Мама мыла раму "+Счетчик) Тогда .... КонецЦикла |
|||
84
fisher
19.05.21
✎
11:52
|
(82) Как вариант. Только в авторизации сервера не вижу смысла. Если на такой уровень угроз ориентироваться то и другие вещи надо по-другому делать.
|
|||
85
Kassern
19.05.21
✎
11:53
|
(81) Если по простому, то можно создать справочник в ЦБ, типа КлиентыОбмена. Гуид элемента справочника и будет идентификатором для работы с ним. Так же можешь хранить в этом справочнике особенности работы с ним (матрицу товары, складов и т.д.).
|
|||
86
pechkin
19.05.21
✎
11:54
|
конечно нужен справочник, как минимум там хранить пользователя
|
|||
87
Smit1C
19.05.21
✎
11:55
|
По большому счету если нет htts, то сниффером перехватывается пакет, из пакета берётся токен и отправляется на сервер из любого приложения и сервер даст ответ по этому токену.
Так что смысла особого нет усложнять его. |
|||
88
fisher
19.05.21
✎
11:56
|
(83) И получить потенциальный гемор с возможностью рассинхронизации счетчиков? Не хочу.
|
|||
89
Garykom
гуру
19.05.21
✎
11:58
|
(0) >3. Как решить вопрос безопасности? Токены какие-нить прикрутить? Стоит ли с JWT заморочиться?
Безопасности от чего/кого? Токены это просто дополнение/усложнение авторизации Обычный логин/пароль или уникальный токен что удобней смотря что тебе надо и как должно работать МП твое кто будет юзать? Как ты их будешь различать на сервере/сервисе и т.д. |
|||
90
pechkin
19.05.21
✎
11:58
|
(89) токены - это не усложнение, а типо пароля
|
|||
91
Garykom
гуру
19.05.21
✎
11:59
|
Короче делай как нибудь, один фиг без опыта первый блин будет комом
Как сделаешь потести на реальной нагрузке - и будет понятно как не надо делать )) |
|||
92
fisher
19.05.21
✎
11:59
|
Пущай токен будет постоянный на день. Снифьте, ломайте. Хрен с ним. Если по-уму легко не сделать, то мне будет достаточно что мамкин кулхацкер не сможет получить данные слепо тыкаясь в ендпоинт.
|
|||
93
Garykom
гуру
19.05.21
✎
12:00
|
(90) Чтобы получить токен сначала надо авторизоваться, токены имеют срок жизни потом заново авторизация
Т.е. это именно усложнение системы с целью упрощения и повышения безопасности Авторизация можно разными способами (логин+пароль, сертификаты укэп и т.д.) а все запросы потом по одному токену (уникальному идентификатору юзера/авторизации) |
|||
94
Smit1C
19.05.21
✎
12:01
|
(92) вот так бы сразу))
|
|||
95
Garykom
гуру
19.05.21
✎
12:02
|
(92) чем тебе не нравится обычная Basic Authorization?
|
|||
96
Garykom
гуру
19.05.21
✎
12:04
|
(95)+ Если ты думаешь что пароли перехватит провайдер или хостер или еще кто то это гм и вперед на коммерческую криптографию, которую тоже кому надо расшифрует ))
|
|||
97
pechkin
19.05.21
✎
12:06
|
(96) хттпс же для этого придумали
|
|||
98
pechkin
19.05.21
✎
12:07
|
(92) а как ты будешь кадый день токен менять?
нужен же будет какой то 2 токен для этого, постоянный |
|||
99
fisher
19.05.21
✎
12:14
|
(95) Морщусь я от неё.
|
|||
100
fisher
19.05.21
✎
12:15
|
(98) Да просто солить каждый день чем-нить разным. Да, стойкость будет в секретности алгоритма. Да и хрен с ним.
|
|||
101
Garykom
гуру
19.05.21
✎
12:15
|
(97) не спасает от подмены провайдером (или еще кем на линии), он тебе подсунет фишинг сертификат посередине, будешь думать что с конечным а по факту через прокси общаешься
и для конечного тоже |
|||
102
pechkin
19.05.21
✎
12:17
|
(101) это сертификат нужно в доверенные добавить ручками, иначе не сработает
|
|||
103
pechkin
19.05.21
✎
12:18
|
(100) тогда придется синхронизировать соль как то
|
|||
104
fisher
19.05.21
✎
12:18
|
(103) Говорю же. Алгоритм ее получения будет одинаков на сервере и клиенте.
|
|||
105
Garykom
гуру
19.05.21
✎
12:22
|
(102) если нет принудительного указания сертификата то он же с сервера берется
и промежуточный тебе подсунет свой вместо конечного и конечному свой подсунет вместо твоего и будет посередине сидеть на линии перешифровывая |
|||
106
Garykom
гуру
19.05.21
✎
12:23
|
(105)+ этим способом в крупняках инет контролируют сотрудников, даже на https сайтах
|
|||
107
pechkin
19.05.21
✎
12:28
|
(106) ну в крупняках то как раз и ручками могут установить нужный серт
|
|||
108
Garykom
гуру
19.05.21
✎
12:33
|
(107) ты упал что ли? свой ноут приносишь, к корп вифи подрубаешь, на сайт миста.ру заходишь и смотря сертификат в браузере вместо "RapidSSL RSA CA 2018" видно нечто совершенно другое
|
|||
109
fisher
19.05.21
✎
13:24
|
Чёт я уже передумал XDTO. XML в json вызывает эстетические спазмы.
|
|||
110
pechkin
19.05.21
✎
13:26
|
(108) и что браузер даже не ругается?
|
|||
111
Garykom
гуру
19.05.21
✎
13:39
|
(110) а с чего ему ругаться то? если сертификат валидный и на тот же домен, просто левым лицом получен
|
|||
112
Garykom
гуру
19.05.21
✎
13:39
|
(109) есть такое
но зато быстро и просто делать |
|||
113
ДенисЧ
19.05.21
✎
13:42
|
(109) Ну ты же его лучше знаешь... Откуда позывы?
|
|||
114
fisher
19.05.21
✎
13:54
|
(113) Я говорил не это. Я говорил, что хотел узнать его получше. Да видать не судьба.
|
|||
115
fisher
19.05.21
✎
13:56
|
Будут структуры/массивы и рукопашные фабрики.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |