Безпечно спілкуватися між браузером та нативним додатком


12

Я працюю над веб-додатком, який потребує даних, які він може отримати лише від локально встановленого локального браузера додатків.

Як можна обійти пісочну скриньку браузера, щоб можна було спілкуватися (надійно, оскільки дані потенційно чутливі), з нативною програмою.

В єдиному прикладі, який я знайшов, користувач вручну переміщує деякі маркери та файли між ними, що є жахливим користувацьким досвідом, якого я хотів би уникнути.


1
Можливо, вам вдасться отримати якесь рішення, працюючи там, коли нативна програма містить невеликий веб-сервер, який працює на localhost.
амон

Я думав, що теж ... У мене були невиразні несолідовані занепокоєння, що це не стосувалося б. Чи є приклади програм, які роблять це сьогодні? (напишіть це у відповідь, і ви, ймовірно, отримаєте бали)
Зак Кус

Вбудований браузер був би найкращим. Вставте веб-переглядач у додаток та запрограмуйте свої взаємодії за потребою.
GregJava

Відповіді:


7

Ви можете вбудувати веб-сервер у нативну програму, тоді ваш клієнт може здійснювати дзвінки на нього за допомогою жорстко зашифрованих посилань на http: // localhost / xyz (можливо, вам доведеться турбуватися про попередження щодо сценаріїв перехресного веб-сайту та / або запустити сервер на не-http-порт). Якщо ви користуєтесь веб-розетками, ваша нативна програма може навіть пересилати дані у веб-браузер, як тільки браузер ініціює спілкування.

Я роблю це локально, вбудований контроль веб-браузера вимагає візуалізації даних із користувацького веб-сервера, і при розробці я запускаю обидва на одному ПК.

Існує безліч крихітних і ефективних вбудованих веб-серверів для C / C ++ (Mongoose, NxWeb, civetweb тощо), C #, як правило, працює на повноцінному сервері WCF, python поставляється з невеликим веб-сервером IIRC.


Я працюю над таким рішенням, але є деякі проблеми, коли браузер намагається з'єднатись через веб-сокет із веб-сторінки з веб-домену Інтернету (www.mydomain.com) з локальним сервером веб-сокетів, особливо якщо веб-сторінка обслуговується HTTPS вимагає, щоб сервер websocket був налаштований на використання wss (WebSocket з SSL). Якщо ви використовуєте самопідписаний сертифікат, щоб "захистити" сервер веб-сокетів, браузер не сподобається вашому підключенню до веб-сокетів. Firefox дозволить це, як тільки ви приймете незахищений локальний сертифікат, але інші веб-переглядачі не дозволять вам так легко підключитися.
Девід

1
Для c # в наші дні найкращий вбудований веб-сервер - це, мабуть, власний хостинг.
Есбен Сков Педерсен

8

Існує кілька способів змішати нативну програму та програму веб-переглядача.

Ви можете вбудовувати браузер у нативну програму, як і програми PhoneGap на мобільних пристроях. Це дозволить вам розширити механізм javascript у браузері та дозволить вам здійснювати дзвінки між ними.

Крім того, переосмислити свою архітектуру. Нехай і нативна програма, і програма на базі браузера використовують сервер в якості переходу між ними. Тож і браузер, і нативний додаток спілкуються лише з веб-сервером, який передає інформацію між обома, якщо це необхідно.

Або якщо вам потрібна нативна функціональність ... просто зробіть єдину нативну програму.

Я не рекомендую підхід "локального веб-сервера" для будь-якого іншого, крім програм, що працюють у контрольованих середовищах. Якщо ваше програмне забезпечення призначене для встановлення та роботи на машинах кінцевих користувачів з мінімальними вимогами щодо підтримки, ви зіткнетеся з цілою низкою проблем, пов’язаних з брандмауером та антивірусними програмами.


Мені потрібні дані з нативного додатка - про те, чи прийнятна ця машина (а не користувач). Якщо ви використовуєте звичайний веб-сервер для переходу між собою, чи можете ви бути впевнені, що машина, на якій знаходиться браузер, є тією ж, яку оцінювали рідні програми. Крім того, повністю згоден, у вас не повинно бути двох без поважних причин, але у нас є свої причини ^ _ ^
Zak Kus

Крім того, мені незрозуміло, яким чином вбудовування браузера в основний додаток насправді дозволить спілкуватися між браузером та нативним додатком
Зак Кус

@Zak, як я вже говорив, ви можете розширити механізм javascript, щоб вони могли розмовляти між собою так, як це робить PhoneGap у мобільних додатках. Ви можете визначити методи, які можуть викликати javascript на сторінці, які виконуються нативним додатком, або викликати функції javascript з нативного додатка.
GrandmasterB

Використання вбудованого браузера таким чином, я думаю, було б найкращим способом забезпечити роботу браузера на машині, на якій він повинен працювати.
GrandmasterB

Технічно я погодився б, що рідний додаток із переглядом Інтернету - це найпростіший спосіб. Однак згідно з цією статтею з німецької мови з Heise on-line, веб-переглядач android для android 4.3 і нижче має серйозні проблеми із безпекою, які неможливо виправити.
k3b
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.