ホームページ  >  記事  >  運用・保守  >  Nginx リバース プロキシのブラウザ フィンガープリンティングに基づく ACL 設定

Nginx リバース プロキシのブラウザ フィンガープリンティングに基づく ACL 設定

WBOY
WBOYオリジナル
2023-06-11 15:42:101569ブラウズ

インターネットの継続的な発展に伴い、Web アプリケーションは私たちの生活に欠かせないものになりました。多くの企業や組織も、より良い製品やサービスをユーザーに提供するために独自の Web アプリケーションを開発しています。しかし、Web アプリケーションの普及に伴い、ネットワーク セキュリティが解決すべき重要な問題となっています。データの安全性を確保するために、Web アプリケーションを保護するためにリバース プロキシを使用する必要がある場合があります。

Nginx は非常に人気のあるリバース プロキシ サーバーです。ロードバランシング、リバースプロキシ、HTTPキャッシュ、SSL端末処理などの機能に使用できます。この記事では、Nginx リバース プロキシを使用してブラウザーのフィンガープリント ベースのアクセス コントロール リスト (ACL) を構成し、アプリケーションを保護する方法について説明します。

ブラウザ フィンガープリントは、ブラウザの一意の識別子を指し、さまざまなブラウザを区別するために使用できます。この識別情報は、オペレーティング システム情報、ブラウザのバージョン、プラグイン リストなど、ブラウザのいくつかの特性で構成されます。ブラウザーのフィンガープリントに基づく ACL は、ブラウザーの一意の識別子に基づいて決定を行い、特定のリクエストへのアクセスを許可または拒否できます。

まず、JavaScript を使用してブラウザーのフィンガープリントを収集する必要があります。 Fingerprintjs2 などの既製のサードパーティ ライブラリを使用できます。これは、ブラウザのフィンガープリントを収集するためのシンプルで使いやすいインターフェイスを提供します。ライブラリを導入し、その get() メソッドを呼び出してブラウザのフィンガープリントを取得するだけです。サンプル コードは次のとおりです。

<script src="https://cdnjs.cloudflare.com/ajax/libs/fingerprintjs2/2.1.0/fingerprint2.min.js"></script>

<script>
    var fingerprint;
    new Fingerprint2().get(function(result) {
        fingerprint = result;
    });
</script>

ブラウザのフィンガープリントを収集した後、検証のためにサーバーに送信します。サーバーはブラウザのフィンガープリントをアクセス制御リストのエントリと比較します。ブラウザのフィンガープリントが ACL 内のエントリのいずれかと一致すると、サーバーはアクセスを許可します。それ以外の場合、サーバーはアクセスを拒否します。

次は、ブラウザ フィンガープリントに基づいて ACL を構成するために使用される、単純な Nginx リバース プロキシ サーバー構成です。

http {
    # 定义访问控制列表
    map $http_user_agent $acl {
        default 0; # 默认情况下拒绝访问
        ~*Firefox 1; # 允许使用Firefox访问
        ~*Chrome 1;  # 允许使用Chrome访问
    }

    # 反向代理配置
    server {
        listen 80;
        server_name example.com;

        location / {
            if ($acl = 0) {
                return 403; # 拒绝访问
            }

            # 反向代理到实际的Web应用程序
            proxy_pass http://localhost:8080;
        }
    }
}

この構成では、Nginx マップ モジュールを使用してアクセス制御リストを定義します。このうち、$http_user_agent は HTTP リクエスト ヘッダーの User-Agent フィールドを表しており、このフィールドにはブラウザーの情報が含まれており、ブラウザーを識別するために使用されます。デフォルトのエントリは 0 に設定されており、これはデフォルトでアクセスが拒否されることを意味します。また、Firefox および Chrome ブラウザを使用したアクセスを許可する 2 つの正規表現も追加しました。

リバース プロキシの構成では、location ブロックで if ステートメントを使用して、ACL のエントリをチェックしました。 ACL 内に一致がない場合は、アクセスが拒否されたことを示す 403 ステータス コードが返されます。それ以外の場合は、実際の Web アプリケーションにリバース プロキシを使用します。

一般に、Nginx リバース プロキシは、Web アプリケーションのセキュリティを保護するのに役立ちます。ブラウザーのフィンガープリントに基づいて ACL を構成することで、ブラウザーの一意の識別子に基づいてアクセス許可を制御し、アプリケーションのセキュリティを強化できます。

以上がNginx リバース プロキシのブラウザ フィンガープリンティングに基づく ACL 設定の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。