상세 컨텐츠

본문 제목

url직접입력 방지, 주소직접입력 방지 ... PHP define() defined() 함수이용한 보안

IT공부방/PHP

by 동해둘리 2019. 9. 16. 15:36

본문

반응형

잘못된 경로로 접근하셨습니다?

 

은행 사이트를 보면 가끔씩 '잘못된 경로로 접근하셨습니다' 라는 메시지가 뜨면서 내가 원하는 URL 로의 접근이 차단되는 경우가 있습니다.

 

url직접입력방지, 주소직접입력방지 

 

 

 

예를들어, 로그인을 한 후에 접근해야하는 계좌정보를 표시하는 페이지의 URL 을 사용자가 직접입력했을 경우에, 이를 인식하여 로그인 창으로 돌려보낸다거나, '잘못된 경로로 접근하셨습니다' 라는 메시지를 뿌려주는 등의 경우입니다

 

URL 직접입력방지, PHP define() defined()

 

이와 같이 url직접입력 방지, 주소직접입력 방지를 하기 위해서는 PHP의 define 함수와 defined 함수를 사용하면 쉽게 해결가능합니다.

 

 

참고!!! define 함수는 단순히 상수(constant)를 지정하는 함수입니다

 

<?php
define("GREETING","안녕하세요. 오셔서 감사드립니다");
echo constant("GREETING");
?>

 

위와 같이 GREETING 이라는 상수를 정의하여 그 값을 '안녕하세요. 오셔서 감사드립니다' 라고 세팅한 후에 constant() 함수를 이용하여 GREETING 이라는 상수를 출력하면 '안녕하세요. 오셔서 감사드립니다' 라는 메시지가 출력되게 됩니다. 

 

 

 

 

 

실례로, 로그인을 처리하는 부분을 login.php 로 지정해놓고 index.php 에서 login.php 를 include 하여 사용하는 경우, 사용자가 index.php로 접근하지 않고 login.php URL 을 직접 입력했을때 이를 방지하려면, 다음과 같이 가능합니다. 

 

index.php 코드내에서 define 함수를 이용하여 상수하나를 지정합니다.

 

define('ALLOWED', true);  

include_once('login.php');

 

login.php 코드내에는 defined() 함수를 이용하여 상수지정 여부를 확인합니다.

 

if (!defined('ALLOWED')) exit;

 

 

login.php 는 로딩될때 ALLOWED 상수값이 true 가 아니면 exit 합니다. 즉, 정상적인 index.php 로 접근하지 않고 사용자가 직접 login.php 의 URL 을 입력하게되면, ALLOWED 값에 전혀 지정되지 않은 상태이므로 exit 가 실행되게 됩니다.

 

 

 

 

 

 

반응형

관련글 더보기

댓글 영역