2017-02-01 16 views
1

私は、Java 8とSpring Bootを使用して独自の(単純な)フォワードプロキシを構築することで、HTTPとプロキシの仕組みを学ぶことに興味があります。私が読んだ(そして実装に興味がある)記事はhereです。私が興味の主要3フォワードプロキシ機能は次のとおりです。Java/Springブートでフォワードプロキシを実装する

  • リソースのキャッシング:静的リソース(CSS、JS、メディアファイルなど)が以前にアクセスされた場合、我々は右のオフそれをつかむことができますプロキシのローカル(ファイルシステム)キャッシュ
  • ユーザー追跡/監査:私たちはURLをターゲットに要求を行っているユーザーを確認するためにHTTPヘッダを検査し、おそらくログにこれらのアクセスレコードを書き込むことができます
  • コンテンツフィルタリング :URLフィルタリング、おそらくターゲットサイトとプロの応答を検査する

ここでの目標は、春のブートアプリとして、このプロキシを構築するローカルで実行し、このローカルプロキシを使用するようにブラウザを設定することなど、マルウェアのダウンロードに対してtecting。最終的に、私は非ローカル環境に展開しますが、まずは最初に行うことです。

私は実際にこれらの機能の実装の詳細について心配していません - 私はそれらをどのように記述/実装するかを理解することができます。私が疑問に思うのは、のための最も良いSpring/JavaEEの構成は何ですか?これらのタイプの機能はありますか? Java EEサーブレットフィルタ?スプリングコントローラ?他のいくつかの(おそらくAOPベースの)構成ですか?

ここでも、アイデアがためのものです:

  1. 私は、でローカルプロキシを打つために私のブラウザを設定すると言う、私はウェブサイトに行き、私のブラウザでhttp://localhost:8080/myproxy
  2. は、言う、http://example.com
  3. ブラウザはHTTPリクエスト(http://example.com)をプロキシに戻し、再度実行します。http://localhost:8080/myproxy
  4. プロキシは、使用されている構成/メカニズム、およびその動作がどのように設定されているかによって、クエスト
    • たとえば、静的リソースのキャッシュとして機能するようにプロキシが設定されている場合、その要求がドキュメント(JSファイル、CSSファイル、IMGファイルなど)を要求しているかどうかを確認することができます以前にキャッシュされています。それがキャッシュされた文書の要求であれば、我々は短絡が(完全に標的部位をバイパスする)ことができるだけブラウザにレスポンス(ファイル)を送信
  5. プロキシは、転送(またはブランドの新しいます - ???)標的部位(http://example.com)への要求は、
  6. 標的部位は、プロキシ
  7. 使用構築/機構に応じて、プロキシ(およびその方法)に動作するように構成することができるか、にHTTPレスポンスを返信このレスポンスでは検査/処理できない可能性があります。
    • たとえば、悪意のあるマルウェアをスキャンするようにプロキシが設定されている場合、バイナリデータの応答を検査し、検出された場合、バイナリ応答を一部のサードパーティのスキャナツールに送信して、合否判定などを行います。
  8. プロキシが戻って私は、サーブレットフィルタやSpringコントローラメソッドに傾いてるブラウザ

にHTTPレスポンスを送信しますが、機能のこれらの種類を提示するための適切であるかわかりません。何か案は?

答えて

0

学習目的のために、おそらくSpringを避け、単純なHttpServletを実装することから始めるとよいでしょう。そこから、HttpServletRequestオブジェクトを検査して、転送することを含め、任意の数の操作を実行できます。サーブレット自体にキャッシュロジックを実装することもできますが、サーブレットのキャッシュ動作を強化するServletFilterを追加するのはおそらく理にかなっています。

関連する問題