Web 서버에 대해

 

드디어 특강을 시작했다.

부디 잘해서 실력이 탄탄한 모의해킹 전문가로 성장하고 싶다.



웹 서버란?


쉽게 말하면 파일을 전달하는 친구라고 말할 수 있겠다.


정적으로, 아주 단순히 파일을 읽기만 하고 그대로 토스해주는 녀석을 WEB 서버라 하고,


동적으로, 편지를 받아 주욱 소리내어 읽듯이

파일을 받고 -> 읽고 -> 그 안에 있는 알맹이를 능동적으로 해석해서 ->

그 안에 요청되어 있는 것들을 수행하고 ->

그 결과값을 손님(브라우저)에게 반환해주는 것을 WAS 서버라 하면 되겠다.


이 웹 서버를 내가 머리부터 발끝까지 다 설치하고 구축을 하면 당연히 좋겠지만

지금 당장의 나는 그럴 시간이 없고

선생님으로부터 아주 좋은 실습 도구를 받았기에 오늘은 그걸 쓰도록 하겠다.

하지만 꼭 기억해라. 언젠가는 이 실습 도구를 나 스스로 만들어낼 줄 알아야 할거다.

어쩌면,,, 그게 바로 지금 내가 실습 과정을 100% 이해를 못하고 있는 것의 직접적인 원인일지도 모르겠다.



<정적 Web 서버 실행하는 방법>


웹 서버를 띄워준다.

(파이썬을 실행해라 / -m 모듈을 실행해라 / http.server 라는 이름의 WEB 서버를 실행해라)


http://192.168.36.128:80/ 로 접속해봤더니 서버에 잘 접속이 되는 것을 볼 수 있다.

오케이 일단 첫번째 관문은 넘은거다.

이제 내가 여기다 해야 할 건, 간단한 로그인 페이지를 만드는거다.



<동적 서버 실습>


우선 적어도 내가 지금 켜고 있는게 뭔지는 대강 알고 싶어서dockerCMD라는 파일을 무작정 vi로 열어보았다.

.... 그래도 뭐가 뭔지 모르겠다. 지금 알고 있는건,,, 몇 개의 명령어 정도?

이걸 하나하나 풀어내기에는 지금 나는 시간이 너무 촉박하다.

앞으로 시간을 충분히 들여서 이해하는 걸로 하고 우선은 이걸 써보자.


docker 파일을 실행하기 전에 반드시 그 전에 살아서 돌고 있는 프로세스가 있는지 본다.

있으면 꼭 sudo docker rm -f [CONTAINER ID] 로 지워준 후에

docker ps -a 가 깨끗한 상태에서 실행한다.

./.dockerCMD & <---- 백그라운드에서 실행한다.



그럼 뭐가 요런 식으로 주루룩 실행이 된다.

(...... 그 주루룩이 제발 뭔지 알았으면 좋겠는데.....) (나중에 꼭 시간내서 파헤쳐보자!ㅜㅜ)


자, 여기까지 했으면.... 어쨌든 저쨌든 WAS서버가 백그라운드에서 동작하고 있다는 말이 되겠지.

어디에서 실행이 되었느냐 알고 싶으면 다시 sudo docker ps -a 를 쳐보면 된다.


/webDev/webApp <- 여기가 이제부터 웹 루트 경로다.

이 안에다 내가 이제 파일을 만들면 되는거다.



오케이. 단순 html 잘 읽어오는 거 확인되고.


단순 php파일도 잘 읽어오는 거 확인된다.

자,,,,, 이제 로그인 페이지를 만들려면 어떻게 해야 될까?


1) form 태그에 대해 알아본다.

2) php 구조에 대해 알아본다.


아주 간단한 뼈대를 만들어봤다.

php가 백엔드 언어(서버 측 스크립트)로 돌아가는 구조다.

WAS가 실행해야 하는 코드다.

ex) test.php -> WEB에게 던진다.

WEB '어? 이건 동적 페이지네? WAS야 니가 처리해라.' 하고 WAS에게 던져준다. ->

WAS가 파일을 열어보고, '동적 페이지를 구성하는 언어만 골라서'

'처리한 후',

그 '결과'를 WEB에게 돌려준다. -> WEB이 브라우저로 보내준다. -> 브라우저가 실행한다.

(그래서 그 브라우저는 '결과값'만 가지고 있기 때문에, 어떤 세팅이 원래 되어있었는지는 브라우저 측에서 알 수는 없다.)

$_GET['name'] <---- 전달받은 데이터를 GET방식으로 화면에 출력한다.



그래서 페이지 소스 보기로 확인해보면 이렇게 밖에 안 나온다.


name 상자 파라미터에 문자를 넣어주면 이렇게 출력이 된다.


엉뚱한 파라미터를 주면 당연히 아무것도 안 나온다.


(팁)

php문 작성할 때 한글 깨짐 현상은 이걸 html 안에 넣어주면 된다.

<meta charset="utf-8">


그리고 시간이 흘러.......................

어떻게든 영차끙차 여기까지 오는데까진 성공했다.



웹페이지를 열면 이런 시건방진 팝업이 먼저 사용자를 반겨주고,



핑꾸색 귀염뽀짝한 던전 입구가 나타나고,

문지기는 사용자에게 이름과 암호를 요구한다.

그리고 굳이 안 보여줘도 되는

자기가 하이퍼링크 삽입 연습해봤다고 하는 글귀도 서비스로 보여준다.


알맞은 아이디와 비밀번호를 입력하면,


이런 순순하고 고분고분한 대답이 돌아오며,

반대로 엉뚱한 credential을 입력 후 엔터를 치거나 던전입장 버튼을 누르면,



마찬가지로 이렇게 시건방진 대답을 반환한다.


이로써 내 생애 처음으로 로그인 페이지라는 것을 만들어보았다.

이 글을 몇 년 후에 다시 보면, 난 얼마나 웃을까? 얼마나 웃길까

왜 벌써부터 웃길까? (ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ)


조금 힘들었지만 재밌었고 즐기면서 했다.

일주일 내내 회사에서 열 뻗치고 주말엔 ISO19011 자격증 강의 주말 내내 듣느라

머리에 과부하가 오고 시간이 촉박해지고 있다는걸 알았기에 더 마음이 조급해져서 그랬던거지

그렇지만 않았다면 정말 일하는 느낌 하나도 없이 힘든 줄도 모르고 즐겁게 했을거다.


앞으로는 어떤 세상이 펼쳐지게 될까?

그리고 나에게는 어떤 미래가 기다리고 있을까.


나는 성공한 모의해커 프리랜서와 바운티 헌터라는 꿈을 이루게 될까?

내가 좋아하는 것들로 가득 둘러싸인, 바다가 보이는 편안하고 고즈넉한 집에서

자유롭게 내가 좋아하는 모의해킹을 하며 억대 연봉을 벌고,

남편과 아이들에게 맛있는 집밥을 매일 해주고 쿠키를 구워주는 삶.

가족과 함께하는 저녁이 있는 삶.

그런 삶은 나를.... 기다리고 있을까?


31th Oct 2023.

사당동 집에서 31세의 도윤.

Comments