웹사이트의 웹 서버 측에서 사용자 IP를 실제로 제한할 수 있습니까?
방금 nginx 포워딩 업스트림 및 포워딩 소스 IP 변경에 대해 질문했습니다. 액세스 요청 소스의 IP는 마음대로 변경될 수 있으므로 웹 서버에서 얻은 IP는 완전히 신뢰할 수 없습니다. 사용자의 실제 IP를 제한하는 것입니까, 아니면 이 경로가 실제로 가능하지 않은 것입니까?
답글 내용:
방금 nginx 포워딩 업스트림 및 포워딩 소스 IP 변경에 대해 질문했습니다. 액세스 요청 소스의 IP는 마음대로 변경될 수 있으므로 웹 서버에서 얻은 IP는 완전히 신뢰할 수 없습니다. 사용자의 실제 IP를 제한하는 것입니까, 아니면 이 경로가 실제로 가능하지 않은 것입니까?
nginx는 [당신]이 만들었나요, 아니면 [금지된 사용자]가 만들어야 하나요?
HTTP_X_FORWARD_FOR은 위조될 수 있지만 REMOTE_ADDR은 변경할 수 없습니다.
[차단된 사용자]에 의해 구축된 경우:
$_SERVER["REMOTE_ADDR"]를 통해 nginx 서버의 IP를 얻어 직접 차단할 수 있습니다.
nginx를 구축한 경우:
$_SERVER["HTTP_X_FORWARD_FOR"]를 통해 사용자의 IP를 얻을 수 있지만 위조되었을 수 있습니다.
<code>proxy_set_header X-Forward-For $remote_addr</code>
가장 좋은 방법은 비공개 HTTP 헤더를 추가하는 것입니다. nginx가 전달할 때 비공개 http 헤더를 추가하면 무엇을 위조해야 할지 모르겠습니다.
<code>proxy_set_header X-GAGAGA $remote_addr</code>
또한 현재 Alibaba의 WW에서 사용하는 프록시 플랫폼의 HL 시스템은 HTTP_X_FORWARD_FOR에 의해 엄격하게 필터링되지 않으며 신중하게 구성된 요청이 주입될 수 있습니다. . . (이제 새 버전이 수정되었습니다.)
위조와 관련하여 Linux/Unix/OSX를 사용하는 경우 내장된 컬을 사용하여 위조할 수 있습니다.
<code>curl abc.com/test.php -H "X-FORWARD-FOR:8.8.8.8"</code>
필터링이 없으면 IP를 통해 블랙리스트에 올릴 것인지, 아니면 백그라운드에서 IP 작업 로그를 기록할 것인지 직접 결정하는 기능이 있는 경우도 있습니다.
<code>#想注入就注入 curl miaoqiyuan.cn/test.php -H "X-FORWARD-FOR:' or 'a'='a" #想XSS就XSS curl miaoqiyuan.cn/test.php -H "X-FORWARD-FOR:alert('a')"</code>
해결책이 생각났습니다.nginx를 구성할 때 Proxy_set_header X-Forward-For $remote_addr 구성을 추가하세요. 그런 다음 $_SERVER["HTTP_X_FORWARD_FOR"]는 사용자의 실제 IP를 얻은 다음 프로그램에서 IP를 제한합니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.

PHP는 동적 웹 사이트를 구축하는 데 사용되며 해당 핵심 기능에는 다음이 포함됩니다. 1. 데이터베이스와 연결하여 동적 컨텐츠를 생성하고 웹 페이지를 실시간으로 생성합니다. 2. 사용자 상호 작용 및 양식 제출을 처리하고 입력을 확인하고 작업에 응답합니다. 3. 개인화 된 경험을 제공하기 위해 세션 및 사용자 인증을 관리합니다. 4. 성능을 최적화하고 모범 사례를 따라 웹 사이트 효율성 및 보안을 개선하십시오.

nginx가 시작되었는지 확인하는 방법 : 1. 명령 줄을 사용하십시오 : SystemCTL 상태 nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. 포트 80이 열려 있는지 확인하십시오. 3. 시스템 로그에서 nginx 시작 메시지를 확인하십시오. 4. Nagios, Zabbix 및 Icinga와 같은 타사 도구를 사용하십시오.

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

Windows에서 Nginx를 구성하는 방법은 무엇입니까? nginx를 설치하고 가상 호스트 구성을 만듭니다. 기본 구성 파일을 수정하고 가상 호스트 구성을 포함하십시오. 시작 또는 새로 고침 Nginx. 구성을 테스트하고 웹 사이트를보십시오. SSL을 선택적으로 활성화하고 SSL 인증서를 구성하십시오. 포트 80 및 443 트래픽을 허용하도록 방화벽을 선택적으로 설정하십시오.

클라우드 서버에서 nginx 도메인 이름을 구성하는 방법 : 클라우드 서버의 공개 IP 주소를 가리키는 레코드를 만듭니다. Nginx 구성 파일에 가상 호스트 블록을 추가하여 청취 포트, 도메인 이름 및 웹 사이트 루트 디렉토리를 지정합니다. Nginx를 다시 시작하여 변경 사항을 적용하십시오. 도메인 이름 테스트 구성에 액세스하십시오. 기타 참고 : HTTPS를 활성화하려면 SSL 인증서를 설치하고 방화벽에서 포트 80 트래픽을 허용하고 DNS 해상도가 적용되기를 기다립니다.

Linux에서는 다음 명령을 사용하여 nginx가 시작되었는지 확인하십시오. SystemCTL 상태 Nginx 판사 명령 출력에 따라 : "active : running"이 표시되면 Nginx가 시작됩니다. "Active : 비활성 (죽음)"이 표시되면 Nginx가 중지됩니다.

Nginx 서버를 시작하려면 다른 운영 체제에 따라 다른 단계가 필요합니다. Linux/Unix System : Nginx 패키지 설치 (예 : APT-Get 또는 Yum 사용). SystemCTL을 사용하여 nginx 서비스를 시작하십시오 (예 : Sudo SystemCtl start nginx). Windows 시스템 : Windows 바이너리 파일을 다운로드하여 설치합니다. nginx.exe 실행 파일을 사용하여 nginx를 시작하십시오 (예 : nginx.exe -c conf \ nginx.conf). 어떤 운영 체제를 사용하든 서버 IP에 액세스 할 수 있습니다.
