-
Routing :: Request MethodLanguage/PHP 2020. 6. 26. 13:23
PHP 는 기본적으로 접속관련 ( HTTP 프로토콜 ) 정보를 $_SERVER 변수에 배열형식으로 저장한다.
Routing 처리시 우리는 Request 방식에 따라 처리해야하는데,
1. 비동기 ( Ajax ) 접속으로의 공격
- Ajax : Ansync Request 방식으로 Ansynchronous Javascript and XML , 말그대로 JS와 XML을 이용한 비동기 통신이다.
Ajax 는 일반적으로 타 URL에 대한 접근을 막지만 오픈소스로 타 URL에 대해 접속하는 Ansync 라이브러리를 필요해따라 쓴다. 이 방법으로 타 서버에 공격할 수 있으므로, Ajax로 넘어온 값에 대한 보안처리가 필요할 수 있다.
2. GET 방식의 URL이력 취약점
- GET : URL 방식으로 브라우저에 이력이 남고, 서버접속이력에 기존 접속 URL이 저장될 수도 있다. 보안상 무분별한 GET 은 지양해야한다.
3. Request 방식별로 나누지 않은 Controller 를 사용할 경우
- 사실상 Controller를 나눌수도 있지만, 재사용성이 떨어지기에 Routing 단계에서 처리해주기도 한다.
대표적으로 위 세가지 보안 또는 로직상의 이유가 떠오른다.
요청방식을 확인하는 방법은 앞서 언급한 $_SERVER 을 이용할 수 있다.
<?php if ($_SERVER['REQUEST_METHOD'] === 'GET') { $mode = $vars['mode']; } ?>
$_SERVER 배열의 REQUEST_METHOD 인덱스에 담긴 값이 그 해답이다
여기서 GET / POST 등과 같은 접속방식을 확인하고 RestfulAPI를 구성할 수도 있고
앞서 말한 세가지 경우를 해결하는 방법이 될 수도 있다.