ブラウザとネイティブアプリケーションの間の安全な通信


12

ローカルにインストールされているネイティブアプリケーションブラウザーからのみ取得できるデータを必要とするWebアプリケーションに取り組んでいます。

どのようにしてブラウザーのサンドボックスを回避し、ネイティブアプリケーションと通信できるようにします(データは機密情報である可能性があるため、安全に)。

私が見つけた唯一の例では、ユーザーが手動でいくつかのトークンとファイルを2つの間で移動します。これは、回避したい恐ろしいユーザーエクスペリエンスです。


1
ネイティブアプリケーションにlocalhostで実行される小さなWebサーバーが含まれている場合、何らかのソリューションが機能する可能性があります。
アモン

私もそう思っていました...私はそれが「心配」されないであろう漠然とした未解決の懸念を持っていました。今日これを行うアプリケーションの例はありますか?(これを回答に書き込んでください。おそらくポイントが得られます)
Zak Kus

埋め込みブラウザが最適です。アプリにブラウザーを埋め込み、必要に応じて対話をプログラムします。
GregJava、2015

回答:


7

ネイティブアプリケーションにウェブサーバーを埋め込むと、クライアントはhttp:// localhost / xyzへのハードコードされたリンクを介してウェブサーバーを呼び出すことができます(ここでクロスサイトスクリプティングの警告を心配する必要があるか、サーバーを実行する必要がある場合があります) http以外のポート)。WebSocketを使用する場合、ブラウザーが通信を開始すると、ネイティブアプリケーションはWebブラウザーにデータをプッシュすることもできます。

私はローカルでそれを行います。埋め込まれたWebブラウザーコントロールがカスタムWebサーバーから視覚化データを要求し、開発時には同じPCで両方を実行します。

C / C ++(Mongoose、NxWeb、civetwebなど)には多くの小さく効率的な組み込みWebサーバーがあり、C#はフルオンのWCFサーバーに移行する傾向があり、PythonにはIIRCに小さなWebサーバーが付属しています。


私はこのようなソリューションに取り組んでいますが、ブラウザがインターネットホスト(www.mydomain.com)のWebページからローカルホストWebソケットサーバーに接続しようとすると、特にWebページがHTTPSでは、wsso(SSLを使用したWebSocket)を使用するようにwebsocketサーバーを構成する必要があります。自己署名証明書を使用してWebSocketサーバーを「保護」する場合、ブラウザはWebSocket接続を嫌います。安全でないローカル証明書を受け入れると、Firefoxで許可されますが、他のブラウザでは簡単に接続できません。
デビッド

1
最近のC#の場合、最適な組み込みWebサーバーはおそらくセルフホストのowinです。
Esben Skov Pedersen、2015

8

ネイティブアプリとブラウザアプリを組み合わせる方法はいくつかあります。

PhoneGapアプリがモバイルで行うように、ブラウザーをネイティブアプリ内に埋め込むことができます。これにより、ブラウザのJavaScriptエンジンを拡張し、2つの間の呼び出しを行うことができます。

または、アーキテクチャを再考してください。ネイティブアプリケーションとブラウザベースのアプリケーションの両方がサーバーを仲介役として使用するようにします。そのため、ブラウザとネイティブアプリケーションの両方が、必要に応じて2つのサーバー間で情報を転送するWebサーバーとのみ通信します。

または、ネイティブ機能が必要な場合...単一のネイティブアプリケーションを作成します。

制御された環境で実行されるアプリケーション以外には、「ローカルWebサーバー」アプローチはお勧めしません。ソフトウェアが最小限のサポート要件でエンドユーザーのマシンにインストールして実行することを目的としている場合、ファイアウォールのホスト全体とウイルス対策ソフトウェアに関連する問題に対処していることがわかります。


ネイティブアプリから必要なデータは、(ユーザーではなく)そのマシンが許容可能かどうかに関するものです。中間として通常のWebサーバーを使用する場合、ブラウザーが搭載されているマシンがネイティブアプリが評価したマシンと同じであることを確認できますか。また、完全に同意します。正当な理由がないため、2つはありませんが、理由はあります^ _ ^
Zak Kus

また、ネイティブアプリにブラウザーを埋め込むと、ブラウザーとネイティブアプリの間の通信が実際にどのように許可されるかは明確ではありません
Zak Kus

@Zakは先ほど述べたように、JavaScriptエンジンを拡張して、PhoneGapがモバイルアプリで行うように、ユーザーが互いに会話できるようにすることができます。ネイティブアプリによって実行されるページ上のJavaScriptによって呼び出されるメソッドを定義するか、ネイティブアプリからJavaScript関数を呼び出します。
GrandmasterB 2015

このような組み込みブラウザーを使用することは、ブラウザーを実行する必要があるマシンでブラウザーが実行されていることを確認するための最良の方法だと思います。
GrandmasterB 2015

技術的には、Webビューのネイティブアプリが最も簡単な方法であることに同意します。ただし、heise onlineのこのドイツ語の記事によると、android 4.3以下のandroid web-viewerには、修正できない深刻なセキュリティ問題があります。
k3b 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.