Apache Module 개발에 대해서 질문 드립니다.
안녕하세요. Apache Module 개발에 대해서 질문 드립니다.
아래 조건을 만족하는 샘플이나 방법 등의 조언을 부탁드리겠습니다.
1. POST body를 읽어서 파라미터를 체크한다.
2. 파라미터 값이 올바르면 Client가 요청한 PHP 페이지를 출력한다.
3. 파라미터 값이 올바르지 않으면 요청을 차단하고, 임의의 HTML code를 Client로 출력한다.
4. 2번의 경우, PHP에서도 POST 파라미터를 정상적으로 읽어올 수 있어야 한다.
아래는 제가 테스트한 내용들입니다.
- Developing modules for the Apache HTTP Server 2.4 ( http://httpd.apache.org/docs/trunk/ko/developer/modguide.html )
: ap_hook_handler 에서 처리하는 샘플로 위 4번을 충족하지 못할 것 같습니다.
: ap_hook_handler 에서 POST body를 읽으면 PHP에서 POST 파라미터를 가져오지 못하는 문제가 있습니다.
- mod_dumpost.c 모듈 (https://github.com/danghvu/mod_dumpost)
: filter 에서 처리하는 모듈로 위 3번 항목을 충족하지 못할 것 같습니다.
: filter 에서 임의의 HTTP code를 출력하면, 기존에 요청된 페이지에 코드가 추가되서 출력됩니다. 요청을 차단하고 임의의 HTML code를 출력할 수 있는 방법을 모르겠습니다.
- ap_hook_handler와 filter 의 조합
: ap_hook_handler 가 filter 보다 항상 먼저 호출되어서 위 조건들을 만족하게 만들지 못할 것 같습니다.
그럼 소중한 조언 부탁드리겠습니다.
감사합니다.
[내용 추가]
https://kldp.org/node/143328
https://kldp.org/node/143214
제 판단에는 하시려는 것은 apache module로
제 판단에는 하시려는 것은 apache module로 하는 것이 더 비효과일 것 같습니다.
아마도, module에서 체크했을 때, 체크를 통과하는 비율이 훨씬 높을텐데, 이렇게 되면, apache module에서 post data parsing을 해야 하고, 그 이후에 또 php engine에서 또 하게 될테니, 비용낭비가 더 큽니다.
그냥 php 단에서 post data를 체크하셔서 처리하는 것이 비용이 훨씬 덜 들것으로 예상 됩니다.
네.. 인지하고는 있는데, 일종의 방화벽같은
네.. 인지하고는 있는데, 일종의 방화벽같은 솔루션으로 PHP 소스를 건드리면 안되어서요.
혹, 질문드린 내용에 대해서 참고할 수 있는 부분이 있으면 답변 부탁드리겠습니다.
그리고..
PHP Extension에서 지원하는 부분도 고려해 봤는데..
PHP에서 PHP Extension의 함수를 콜하지 않고 (가장 최상위에서)HTTP Request를 핸들링 할 수 있는 방법이 있을까요?
IIS의 isapi나 apache module처럼..
답변 감사합니다.
제가 말씀 드리는 것은 php source code를
제가 말씀 드리는 것은 php source code를 고칠 필요 없이, php.ini의 auto_prepend_file 을 이용하시는 것을 말하는 겁니다.
즉, 이 옵션을 설정하면, php가 load할때 이 파일을 먼저 실행하게 되니, 원하시는 바를 php에서 처리가 가능할 것으로 보여서 말씀 드리는 것입니다.
아, 도움이 많이 될 것 같습니다. 고객사와 충분히
아, 도움이 많이 될 것 같습니다.
소스가 노출되면 안되니.. include된 파일에서 php extension 같은 걸 호출할 수 있으면 좋겠군요.
고객사와 충분히 협의해 볼만 할 것 같습니다.
답변 감사드립니다.
php module은 php.ini에서 load
php module은 php.ini에서 load 하시면 됩니다. auto_prepend_file 에 지정하는 것은 그냥 해당 서버 환경에서 php programming 하시는 것과 동일 합니다.
댓글 달기