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 |