[기초] 왜 브라우저에서는 php코드가 보이지 않는 것일까?

2019. 2. 18. 22:39Web Hacking/Web hacking Knowledge & Techniques

흔히 웹 해킹 문제들을 풀 때 

F12를 눌러 개발자 도구를 켜서

주석이나 <html>

<body>

<a>

<iframe>

식의 태그 등을 확인하곤 한다!


하지만 php 코드는 일반적인 경우

100이면 99.99%의 확률로

브라우저에는 php 소스코드가 보이지 않는다!


왜냐? 

결론부터 말하자면!!

브라우저는 클라이언트(사용자)쪽의 언어를 해석하기 때문이다!

php는 서버쪽 언어이기 때문에 

브라우저는 php가 이미 실행된 후 나온 결과 값만

받아서 표시한다!!!


헷갈릴 수 있으니 좀 더 자세하게 설명하겠다


1. 우리가 브라우저에서 요청을 하는 경우(발신)

------------------------------------------------------------

브라우저    ==>      웹 서버      ===>     php해석기

|      (요청 )          |            ( 요청 )        |   

(나)                  서버쪽                php 읽는 놈

------------------------------------------------------------


내가 로그인을 할 때 

id : 123 

pw: 123 


이렇게 입력하고 로그인 버튼을 누르면

GET방식이든 POST 방식이든 

둘 중 하나의 방식으로

웹 서버에 있는 특정 파일에 보낸다


그 특정파일을 지정해줄 때

html에서는 form태그 안에 

action 속성을 활용한다!

 <form action="login.php" >


이렇게 되면 내가 보낸 

id 와 pw 값을 가지고

login.php 파일을 읽으려고 

문을 두들긴다 "똑똑똑 계세요?"


근데 웹서버는 php 파일을 못 읽기 때문에

php 해석기에게 읽으라고 일을 시킨다

"야 나 이거 못읽어 php너가 읽어!"


그러면 login.php는

내가 입력한 id와 pw값을

DB(데이터 베이스)와 연동해서

조회한 후 결과 값을 뱉는다!


뭐 "로그인 성공!"

"아이디 혹은 비밀번호가 일치하지 않습니다"

둘중에 하나겠지만..


그럼 이 뱉은 결과를 다시 브라우저에 보내는게

아래에 있는 2번이다!




2. 요청을 해서 값을 수신

------------------------------------------------------------

브라우저    <==      웹 서버      <===    php해석기

|      (결과)          |            ( 결과 )        |   

(나)                 서버쪽               php 읽는 놈

------------------------------------------------------------


php 해석기가 뱉은 값을 

웹서버에게 전송한다

" 야 php 파일 읽고 다 처리했어, 결과값 받아"


그러면 웹서버는 

(php 해석기에게 고맙다고 말하고)

해당 결과를 브라우저에게 표시한다!


만약 로그인이 성공했으면 

php 해석기가 뱉은 값이

"로그인 성공!"이기에 

"로그인 성공!"을 브라우저에 띄울 것이고


로그인이 실패했으면

php 해석기가 뱉은 값이

"아이디 혹은 비밀번호가 일치하지 않습니다"이기에

"아이디 혹은 비밀번호가 일치하지 않습니다"를 브라우저에 띄울 것이다!


이제 결론을 좀 정리해서 말하자면!

1. php 코드는 서버쪽 언어이기에 이미 실행된 결과 값만 보여진다

2. 그래도 이해가 안간다면, 이렇게 이해하면 된다!

php라는 사람이 있는데

 우리는 php가 뭘 먹었는지 볼 수 없고

php가 먹고 난 후에 배설한 똥만 볼 수 있다


여기서 우리브라우저에 해당하고

뭘 먹었는지php코드에 해당하고

은 php를 실행한 결과 값에 해당한다!


그렇기 때문에 우리는 브라우저에서 php결과만을 볼 수 있다!

이상 끝!