remote IP address

Web Security 2021. 3. 24. 11:46
728x90

PHP 3 Tier 환경에서 WAS 서버에서 원격 접속하는 클라이언트(Web Browser, APP)의 IP주소를 알아낼 목적으로 $_SERVER['REMOTE_ADDR'] 를 사용하면 맞을까?

사이트 접속한 사용자 IP주소를 알려주는 것인데 앞단의 Web 서버의 IP주소를 반환하고 있다면??

DB 테이블에 Web Server 의 IP주소를 기록하고 있더라.

 

구글링에서 찾은 이 함수를 사용하면 접속단말의 IP주소를 가져온다.

function getClientIP() {
	if (isset($_SERVER)) {
		if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
			return $_SERVER["HTTP_X_FORWARDED_FOR"];

		if (isset($_SERVER["HTTP_CLIENT_IP"]))
			return $_SERVER["HTTP_CLIENT_IP"];

		return $_SERVER["REMOTE_ADDR"];
	}

	if (getenv('HTTP_X_FORWARDED_FOR'))
		return getenv('HTTP_X_FORWARDED_FOR');

	if (getenv('HTTP_CLIENT_IP'))
		return getenv('HTTP_CLIENT_IP');

	return getenv('REMOTE_ADDR');
}

참고로 알아두면 좋은 사항

$_SERVER['DOCUMENT_ROOT'] = 현재 사이트가 위치한 서버상의 위치 => /htdocs/

$_SERVER['HTTP_ACCEPT_ENCODING'] = 인코딩 방식 => gzip, deflate

$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 언어 => ko

$_SERVER['HTTP_USER_AGENT'] = 사이트 접속한 사용자 환경 => Mozilla/5.0

$_SERVER['REMOTE_ADDR'] = 사이트 접속한 사용자 IP => xxx.xxx.xxx.xxx

$_SERVER['SCRIPT_FILENAME'] = 실행되고 있는 위치와 파일명 => htdocs/index.php

$_SERVER['SERVER_NAME'] = 사이트 도메인 => www.abc.com

$_SERVER['SERVER_PORT'] = 사이트가 사용하는 포트 => 80

$_SERVER['SERVER_SOFTWARE'] = 서버의 소프트웨어 환경 => Apache/2.4.6 (Unix) PHP/7.3.27 

$_SERVER['SERVER_PROTOCOL'] = 사용된 서버 프로토콜 => HTTP/1.1

$_SERVER['REQUEST_URI'] = 현재페이지의 주소에서 도메인 제외 =>  /index.php?user=???&name=???

$_SERVER['PHP_SELF'] = 현재페이지의 주소에서 도메인과 넘겨지는 값 제외 =/ index.php
728x90

'Web Security' 카테고리의 다른 글

CentOS 7 서버 보안  (0) 2023.03.03
HTML Purifier 사용법 예시  (0) 2023.02.28
파일 다운로드 공격 방지  (0) 2019.07.05
파일 업로드 공격 방지  (0) 2019.06.21
Cross-Site Scripting (XSS) 방지  (0) 2019.06.20
블로그 이미지

Link2Me

,