問題タブ [websecurity]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tcp - ポートノッキングを使用して、ブラウザーとローカルで実行されるサービスとの間で信頼性の高い情報配信を行う
目標
ブラウザーがローカルで実行されているサービスと情報を交換できるようにします。ブラウザを実行しているユーザー (Windows ではログオン セッション) をサービスが特定できるようにします。可能であれば、TLS 証明書と秘密鍵をマシンに保存しないでください。おまけタスク: Kaspersky や Sophos などのウイルス対策ソフトウェアがすべての TCP 接続をプロキシするセットアップのソリューションを提供します。
物語
基盤となる OS は Windows ですが、最新の任意の OS を使用できます。システムで実行されているデーモンがあります。Windows の場合、これは Windows サービスです。デーモンにデータを送信するリモート サーバーからインターネット ブラウザによって読み込まれる JavaScript があります。デーモンには HTTP/HTTP サーバーがありません。代わりに、デーモンは N 個のポートを開き、着信接続をリッスンします。N は下位 2 桁の数字です。
JS は範囲 N 内の選択されたポート K のグループへの TCP 接続を開始します。現在の実装では、JS は 127.0.0.1:port-number から JS スクリプトをロードしようとします。デーモンは接続を受け入れ、すぐに閉じます (ちょっとしたポート ノッキング)。デーモンは、JS によって「ノック」されたポートからデータを回復します。
現在の実装では、バックエンドはポートの一意のタプル (たとえば、3 つのポートの組み合わせ) を選択します。タプルは、ブラウザ セッションを識別するキーです。このサービスは、特定の OS プロセスによってアクセスされるポートである「ノック」を収集します。サービスは、収集されたポートを使用してバックエンドにクエリを実行します。
このソリューションの目標の 1 つは、サービスでの HTTP/HTTPS サーバーの実装を回避し、SSL 証明書のメンテナンスを節約することです。
問題
- JS がポートに接続する順序は定義されていません。具体的には、2 つのブラウザーがノッキング セッションを同時に実行できます。
- ポートがビジーであるため、サービスは範囲 N の一部のポートを開くことができない場合があります。
サーバーは範囲 N から一意の組み合わせを選択するため、順序は重要ではありません。ポートの欠落を許容するシステムが必要です。複数のタプルを選択し、複数の範囲 N を使用することを考えていました。
質問
問題にFECを採用するにはどうすればよいですか? デザインに意味はありますか?
amazon-web-services - AWS で実行されている私のスプリング ブート アプリケーションの Amazon-Guard-Duty
AWS の EC2 インスタンスで実行されているスプリング ブート アプリケーションがあります。基本的に、他のアプリケーションの REST エンドポイントと API を公開します。DDoS 攻撃や悪意のあるホストからのリクエストを防ぎ、通信に独自の証明書を使用するなど、アプリのセキュリティ対策を改善したいと考えています。Amazon Guard Duty を見つけましたが、それがアプリのセキュリティ保護にどのように役立つのかわかりません。また、代替手段は何ですか? 提案やガイドラインは大歓迎です。