인터넷의 지속적인 발전으로 웹 애플리케이션은 우리 삶에 없어서는 안 될 부분이 되었습니다. 많은 기업과 조직에서는 사용자에게 더 나은 제품과 서비스를 제공하기 위해 자체 웹 애플리케이션을 개발했습니다. 그러나 웹 애플리케이션이 대중화되면서 네트워크 보안은 우리가 해결해야 할 중요한 문제가 되었습니다. 때로는 데이터가 안전한지 확인하기 위해 웹 애플리케이션을 보호하기 위해 역방향 프록시를 사용해야 할 때도 있습니다.
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 브라우저를 사용하여 액세스할 수 있도록 두 개의 정규식을 추가했습니다.
역방향 프록시 구성에서는 위치 블록의 if 문을 사용하여 ACL의 항목을 확인했습니다. ACL에 일치하는 항목이 없으면 액세스가 거부되었음을 나타내는 403 상태 코드가 반환됩니다. 그렇지 않으면 실제 웹 애플리케이션으로 프록시를 역방향으로 수행합니다.
일반적으로 Nginx 역방향 프록시는 웹 애플리케이션의 보안을 보호하는 데 도움이 될 수 있습니다. 브라우저 핑거프린팅을 기반으로 ACL을 구성하면 브라우저의 고유 식별자를 기반으로 액세스 권한을 제어하고 애플리케이션의 보안을 강화할 수 있습니다.
위 내용은 Nginx 역방향 프록시의 브라우저 핑거프린팅을 기반으로 한 ACL 구성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!