• 0
zekelive

Android + DataSnape + Локальная БД

Вопросы

Товарищи, здравствуйте. Хотел бы проконсультироваться с вами на довольно сложно для меня тему. Имеется клиентское мобильное приложение на Андроид. Принцип его просто, загружает фирмы из БД в scrollbox. За счёт того, что сразу загрузка всех данных из сервера занимает длительное время, было принято решение загружать с сервера только ключевую информацию (название фирмы), а остальную информацию загружать из локальной БД. При этом, т.к. файл БД можно легко вытащить из apk файла любому человеку, размещать всю БД на локалке нельзя. Только информацию в целом не представляющую большой значимости в отдельности от названия фирмы и не только. 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 ответов на этот вопрос

  • 0

Используйте шифрование для локальной БД. Есть отличные компоненты LiteDAC, там это все из "коробки" и достаточно надежно для взлома.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 час назад, zekelive сказал:

Товарищи, здравствуйте. Хотел бы проконсультироваться с вами на довольно сложно для меня тему. Имеется клиентское мобильное приложение на Андроид. Принцип его просто, загружает фирмы из БД в scrollbox. За счёт того, что сразу загрузка всех данных из сервера занимает длительное время, было принято решение загружать с сервера только ключевую информацию (название фирмы), а остальную информацию загружать из локальной БД. При этом, т.к. файл БД можно легко вытащить из apk файла любому человеку, размещать всю БД на локалке нельзя. Только информацию в целом не представляющую большой значимости в отдельности от названия фирмы и не только. 

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

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

- А что пугает в локальном расположении БД? SQL lite прекрасно шифруется sha256 с головой.

- DataSnap убогий на мой взгляд. Уже сколько релизов подряд он течет не дай бог как. И по сути не лучшее решение для web сервера. Я думаю многие поддержат меня когда я скажу что лучшим вариантом будет трехзвенка Client -> PHP -> DB

- Хранить статичные данные в локальной БД тоже такое себе. А вдруг они станут не актуальны? Надо учесть это и описать методы их замены/удаления. Ну а также VACUUM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 минуты назад, FREEFAR сказал:

- А что пугает в локальном расположении БД? SQL lite прекрасно шифруется sha256 с головой.

- DataSnap убогий на мой взгляд. Уже сколько релизов подряд он течет не дай бог как. И по сути не лучшее решение для web сервера. Я думаю многие поддержат меня когда я скажу что лучшим вариантом будет трехзвенка Client -> PHP -> DB

- Хранить статичные данные в локальной БД тоже такое себе. А вдруг они станут не актуальны? Надо учесть это и описать методы их замены/удаления. Ну а также VACUUM

Катраз использую sql lite для локальной БД. Но из коробки delphi шифрование отсутствует. Подскажите, в какую сторону копать? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
3 минуты назад, zekelive сказал:

Катраз использую sql lite для локальной БД. Но из коробки delphi шифрование отсутствует. Подскажите, в какую сторону копать? 

LiteDAC от DEVART

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 2
2 часа назад, zekelive сказал:

Катраз использую sql lite для локальной БД. Но из коробки delphi шифрование отсутствует. Подскажите, в какую сторону копать? 

Кто сказал отсутствует?

image.png.c525bf2cf5823a51da1f8623f4583759.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 минуты назад, FREEFAR сказал:

Кто сказал отсутствует?

image.png.c525bf2cf5823a51da1f8623f4583759.png

Действительно, спасибо, обращу внимание. Обращаться к БД так же, или после шифрования что то меняется? Запросы выборки и ТД так же выполнять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
5 минут назад, zekelive сказал:

Действительно, спасибо, обращу внимание. Обращаться к БД так же, или после шифрования что то меняется? Запросы выборки и ТД так же выполнять?

все то же самое. Включаешь тип шифрования и пароль. 

В нашем случае мы БД создавали в рантайме

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 минуты назад, FREEFAR сказал:

все то же самое. Включаешь тип шифрования и пароль. 

В нашем случае мы БД создавали в рантайме

Спасибо, буду пробовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
10 часов назад, FREEFAR сказал:

все то же самое. Включаешь тип шифрования и пароль. 

В нашем случае мы БД создавали в рантайме

С шифрование разобрался спасибо за информацию. Возник вторичный вопрос, т.к. пароль указывается в интерфейсе самого firebird из под delphi, не будет ли возможно его вытащить из apk файла путем его декомпиляции? Или лучше пароль передать из серверной БД? Пароль для обращения к БД каким то образом шифруется или нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
6 часов назад, zekelive сказал:

С шифрование разобрался спасибо за информацию. Возник вторичный вопрос, т.к. пароль указывается в интерфейсе самого firebird из под delphi, не будет ли возможно его вытащить из apk файла путем его декомпиляции? Или лучше пароль передать из серверной БД? Пароль для обращения к БД каким то образом шифруется или нет?

Мы не проверяли , но аудит ИБ прошли. Полагаю когда подписали приложение его стало невозможным вытащить 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Увы, но нет проблем вытащить пароль из apk, если он лежит в открытом виде. Подпись приложения этому никак не препятствует (подпись гарантирует только отсутствие изменений, но не более того).

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 минуту назад, Tumaso сказал:

Увы, но нет проблем вытащить пароль из apk, если он лежит в открытом виде. Подпись приложения этому никак не препятствует (подпись гарантирует только отсутствие изменений, но не более того).

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

Интересные подробности. Спасибо, буду думать как организовать это.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
13 минут назад, Tumaso сказал:

Увы, но нет проблем вытащить пароль из apk, если он лежит в открытом виде. Подпись приложения этому никак не препятствует (подпись гарантирует только отсутствие изменений, но не более того).

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

Ну при таком раскладе AirWatch наше все

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От gutalin79
      Почему при добавлении MapView в пример Android Service, приложение перестает работать?
      AndroidSimpleService.zip
       
       
       
      Пример делал по этому видео: 
       
    • От Astghik
      Hello !!!
      I want onButtonClick create popup. I use TPopup component. All good, but on android "Back button" click closing forma. But I want close popup (when popup is shown).

       
      //---------------------------------------------------------------------------------
      void __fastcall  btn3PointsClick(TObject *Sender)
      {
          PopUpSettings->IsOpen = true;
          PopUpSettings->PlacementTarget = btn3Points;
          PopUpSettings->BringToFront();
      }
      //-------------------------------------------------------------------------------------
      void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose)
      {
          try {
              if (PopUpSettings->IsOpen == true) {
                  CanClose = false;
              }
              else {
                  CanClose = true;
              }
          } __finally {
              PopUpSettings->IsOpen = false;
          }
      }
      //-------------------------------------------------------------------
       
    • От Rokweb
      Таймер с интервалом 1мс заметно подтормаживает во время выполнения анимации TFloatAnimation в Tokyo. У всех так или только у меня?
    • От Rokweb
      Здравствуйте.
      Речь пойдёт об Android.
      Использовал в Berlin данный unit для проигрывания звуков (TMediaPlayer не подходит) и все отлично работало. Сейчас перешел на Tokyo и происходит зависание в цикле:
       
      while not GLoaded do begin Sleep(10); Application.ProcessMessages; end;  
      Модуль прикрепил в сообщении.
       
      Так же интересует - возможно ли, использовать стиль, созданный в процессе разработки Android приложения - в iOS и если да - то как это правильно реализовать (почти каждый контрол имеет сейчас свой стиль)?
       
      Прошу помощи.
      GameAudioManager.zip
    • От Edward Tarasov
      Привет всем. кто сталкивался с такой ерундой, что в webbrowser вместо сайта тупо белый экран?? причем сам сайт отображаеться норм, и на том же планшете, но в стандартном бразуере и на компе... и именно этот сайт не пашет из приложения
    • От zekelive
      Друзья, первый раз столкнулся с картами и не пойму в чем дело. Приложение подписано, релизная версия. Добавил карты на форму и запустил на компиляцию, все отлично. Запускаю на смартфоне - приложение сразу вылетает. Ничего не прописывал связанное с картами, просто добавил компонент на форму. Что не так ?
    • От Алексей Алексеев
      Здравствуйте! Помогите начинающему, всё перелазил, всё что мог и всё безрезультатно.
      Такая проблема: 
      Стоит задача убрать перенос строки в Memo:
      Из 
      "1строка"
      "2строка" 
      сделать:
      "1строка 2строка" .
      Казалось бы все просто:
      memo1.Text:=memo1.Text.Replace(#13#10,' '); И на Windows всё работает, но на Android отказывается!
      Просто не реагирует, ошибок не выдает. Проверял на XE8 и на 10.2.
      Может дело в смартфоне Xiomi miMax? Так как вообще memo на нём глючит...
    • От gutalin79
      Доброго времени суток!
      Хотел у Вас спросить. Есть ли возможность сделать на Delphi под Android кнопку которая была бы доступна в режиме блокировки? То есть чтобы я мог её нажать и включить фонарик или ещё что-нибудь и при этом не пришлось разблокировать телефон. Заранее благодарю, за ответ!  

    • От brunnengi
      Здравствуйте.
      Требуется программа на андроид с набором кнопок со следующем функционалом:
      1. Кнопка1 - создать базу в test.sqlite (в том месте где доступ к нему есть только у самого приложения (имею ввиду если это не ROOT телефон, при рут и так всё понятно)
      2. Кнопка2 - создать таблицу в базе test.sqlite с названием "TblTest01" (с разным набором полей на своё усмотрение)
      3. Кнопка3 - создать таблицу в базе test.sqlite с названием "TblTest02" (с разным набором полей на своё усмотрение)
      4. Кнопка4 - Добавить строку в таблицу "TblTest01" (любой набор данных на ваших усмотрение)
      5. Кнопка5 - Удалить строку в таблице "TblTest01" (по любому ключу на ваше усмотрение)
      6. Кнопка6 - Изменить строку в таблице "TblTest01" (по любому ключу и любое значение на ваше усмотрение)
       
      Приложение должно иметь фоновый сервис, который должен получать данные с сервера и добавлять их в базу test.sqlite в таблицу "TblTest02".
      При получение новый данных, сервис должен показать в "шторке" сообщение, по клику на которую открывается само приложение с визуальной частью.
      Т.е. если визуально приложение закрыто, выгружено, не запущено или запущено, фоновый процесс должен сам делать запросы к серверу и добавлять новые данные в базу, если они есть/поступили
      Приложение должно запускаться вместе с системой, после перезагрузки и т.д.
      Использовать только те компоненты что доступны в самой среде из коробки.
      Часть где делается запрос к серверу должен иметь timeout равный 20 секундам.
      Сервис должен грамотно делать запросы к серверу как положено в Андроид приложениях. 
      Серверная часть мне не нужна, можете для теста сами эмулирвать эти процессы.
       
       
      -----
      ЦЕНА: 2500р.
      СРОКИ: Не горит, но в целом где то дней 7 есть
      Перечисляю на QIWI, ЯД, Сбербанк, короче куда скажите.
    • От zekelive
      Добрый день, товарищи. Если кто сталкивался, подскажите) в потоке создаются картинкив виде плиток и прочие компоненты и падают на scrollbox.  Но в runtime пролистывание лагает, да в целом вся программа подлагивает. Можно ли как то реализовать подгрузка в фоне без ущерба? Или может ещё какой способ есть?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу