'Spac Class Mapping'에 해당되는 글 1건

  1. 2010.01.22 Spac 액션클래스 매핑 :: Spac Action Class Mapping
Spac은 URL 을 분석하여 실행할 액션클래스를 찾아 실행하는데, 이때 호출되는 URL에 실행되는 액션클래스명이 노출되게 됩니다.

여러가지 이유로 노출되는 클래스명을 감추고 싶은경우 클래스매핑을 통해 호출되는 클래스와 실제 실행되는 클래스를 다르게 지정할 수 있습니다.

클래스매핑은 ActionClassMapping.ini 파일에의해 작동되므로 이 파일을 수정하여 사용합니다.

먼저 "ActionClassMapping.ini" 파일의 내용을 보면 아래와 같습니다.
;ActionClass Mapping
[Class]
Welcome = HelloSpac

세번째 줄 부터 실제 사용할 클래스명을 설정합니다.
세번째 줄의 변수명인 "Welcome"은 URL로 이 "Welcome" 이 호출되면 값인 "HelloSpac" 이 실행되게 합니다.
즉, http://www.mydomain.com/Welcome 이 호출되면 실제는 http://www.mydomain.com/HelloSpac 이 실행됩니다.



그렇다면 http://www.mydomain.com/HelloSpac 을 직접 호출되면 어떻게 될까요?
"HelloSpac" 의 실행결과 값이 그대로 출력됩니다.

위의 예처럼 실제 실행되는 클래스는 "HelloSpac" 이지만 웹에서 호출할땐 "Welcome" 을 사용하고
"HelloSpac" 이 호출되면 거부 응답을 하고 싶다면???

먼저 "HelloSpac" 이 호출될 경우 응답할 액션클래스를 생성합니다.
아래처럼 만들어 봅니다.

거부응답을 보여줄 클래스명을 "Deny.Class.php" 로 해봅시다.

* Spac/model/Deny.Class.php
<?php
class Deny extends Controller {
   
    function Deny() {}

    function execute() {
        echo "Access Denied";
    }

}
?>

거부 응답을 보여줄 "Deny" 클래스를 만들었습니다.

이제  "ActionClassMapping.ini" 에 거부응답 클래스를 등록해 줍니다.
;ActionClass Mapping
[Class]
Welcome = HelloSpac
HelloSpac = Deny


위처럼 설정하게 되면
1. http://www.mydomain.com/Welcome 이 호출되면 "HelloSpac" 클래스가 정상적으로 실행됩니다.
2. http://www.mydomain.com/HelloSpac 이 호출되면 "Deny" 클래스가 호출됩니다.

결론적으로 "HelloSpac" 를 실행하기 위해선 "Welcome" 을 호출해야만 하고 직접 "HelloSpac"을 호출하게되면 거부응답인 "Deny"를 보여줍니다.

직접 접근을 막고 싶은 클래스는 위와 같이 Deny 클래스를 매핑하여 외부에 해당 클래스의 노출을 막을 수 있습니다.



* 클래스매핑에 설정하는 접근클래스명은 Spac 클래스명명규칙을 따르지 않습니다.
  :  Spac 에서 액션클래스명은 알파벳이나 숫자로 이루어져야 하며 첫글짜는 반드시 알파벳대문자로 시작해야 하는 규칙이 
     있지만, 클래스 매핑을 통해 접속을 하도록 하는경우에는 이 규칙을 따르지 않아도됩니다.
     따라서 클래스매핑을 통해 URL 을 복잡하게 구성할 수도 있습니다.


     ActionClassMapping.ini
;ActionClass Mapping
[Class]
d90f7f896g5jh7467fg58df7g89df6g8df7g5h6DFA3jjd7sg____ = HelloSpac
     위 예제처럼 클래스명을 "d90f7f896g5jh7467fg58df7g89df6g8df7g5h6DFA3jjd7sg____" 와 같이 임의의 문자를 복잡하게
     구성해도 Spac에서 클래스매핑에 따라 "HelloSpac" 의 처리를 문제없이 수행합니다.
Posted by webdata