웹, 백엔드

브라우저, 웹 서버

Strong_H 2021. 11. 18. 23:16

# 브라우저

브라우저는 html, css, javascript 3가지를 읽어들인다.
html 은 정적인 데이터를 보여준다. (브라우저상의 텍스트 등)
javascript 는 동적인 역할을 한다. (메시지창을 띄운다거나, 버튼입력시 실행되는 어떤 결과)
css 는 html을 꾸며준다.
 
브라우저가 웹서버에게 html을 요청하면,
웹서버에서 필요한 동작을 모두 실행한후 완성된 html소스를 브라우저에게 전달해준다.
브라우저는 완성된 html소스를 읽어들인다.
 
브라우저마다(익스플로어, 크롬, 사파리 등) 동일한 html을 읽어들임에 있어서 약간씩 차이가 있다.
그 결과로 같은 사이트임에도 버튼의 모양이나 위치 등 약간의 차이가 있다.
 
<html> 하나의 태그
        <head> 문서 자체에 대한 정보를 담을때 사용
        </head> 
        <body> 바디를 열어주고
        </body> 닫아준다.
</html> 하나의 태그
 
 
 
 
 
#GET 과 POST
서버에 요청(전달)하는 메소드
 
GET = URL끝에 데이터, 위치 주소등이 붙어 보내는 방식으로 외부에 노출되기 쉬워 보안에 취약함.
데이터의 크기제한(길이제한)이 있으며 키와 밸류로 이루어져 있다.
키 : id, passwd
밸류 : study, 11
&는 데이터 구분
 
POST = 데이터가 외부에 노출되어있지 않다. 상대적으로 보안에 안전하다.
데이터의 크기제한이 없고 삽입, 수정등이 용이한 장점이 있다.
GET메소드처럼 URL에 노출되있지 않고 HTTP의 BODY안에 내용이 있다.
 
 
 
 
 
# 세션과 쿠키
 
  세션 쿠키 
 저장위치 서버에 저장 클라이언트에 파일로 저장 
 보안 쿠키활용 세션id만 저장
세션id를 구분해 서버에서 처리 
보안성이 좋음
접근이 쉬워 보안에 취약 
 라이프 사이클 브라우저의 종료와 함께 삭제됨
또는 만료기간을 정할 수 잇음
파일로 저장되는 특징으로 인해 브라우저를 종료해도 정보가 남아있을 수 있음
 속도 비교적 느림 서버에 요청시 비교적 빠름

쿠키를 사용하는 이유 
- 세션은 서버에서 감당해야 하기에 무분별하게 많이 생성되면 서버의 메모리가 한계에 다다른다. 

 
 
 
# 리눅스 명령어
ls > 해당 디렉토리 내에있는 디렉토리, 파일 출력
sudo > 관리자 권한으로 명령어를 실행한다.
su - > 관리자 권한을 획득(?) 하여 매번 sudo를 붙이지 않아도 모든 명령어를 관리자권한으로 실행 할 수 있다.
clear > 화면정리
cd > 해당위치 이동
 
vi 
vi > 편집
vi 해당위치 입력후 
a > 편집
dd > 현재 커서에 해당하는 줄 삭제
esc > 편집상태 해제
:w > 저장
:q > 나가기
:wq > 저장후 나가기
 
 
 
 
 
#웹 취약점
 

 

* 인덱싱 - 서버 설정으로 인해 인덱스 노출

예상피해 : 웹 서버 내의 디렉토리 구조와 파일이 노출되 자료유출, 정보유출등의 피해가 발생 할 수 있다.

예방방법 : 웹 서버에서 디렉토리 인덱싱 기능을 비활성화 한다.

> Option Indexes FollowSymLinks 를 Option FollowSymLinks 로 변경

 

* 아이디/ 패스워드 메시지 - 아이디 또는 패스워드가 틀렸을때 어떤값이 틀렸는지에 대한 정보는 공개하지 않는다.

예상피해 : 무작위 대입공격의 대상이 될 수 있다.

예방방법 : 아이디 또는 패스워드가 일치하지 않는다고 메시지를 출력해주는것이 바람직

 

* SQL injection - SQL 쿼리문을 입력해 공격함

예상피해 : DB의 정보유출, 아이디 입력하고 ' or 1=1# 입력해 로그인 등

(해당문장으로 1=1은 참, or문으로 둘중 하나라도 참이면 참, #뒤에는 주석 처리함으로 로그인이 될 수 있다.)

예방방법 : PDO(PHP Data Object) 기능사용

PDO의 기능 중에 Prepared Statements활용, 파라미터를 제외한(어떠한 외부 데이터도 들어가지 않은) 완전히 뼈대만 있는 쿼리문을 만들고, 나중에 데이터들을 입력하여 SQL문을 실행
미리 실행될 SQL의 구조를 만든 후, 나중에 데이터를 입력하는거라 나중에 입력되는 변수를 PDO쪽에서 자동으로 이스케이핑을 하기에 사용자가 악의적인 문자열을 입력하여도 모두 알아서 이스케이프 시키니 SQL문에 어떠한 조작도 가해질 수 없음

 

* xss - 공격하려는 사이트에 스크립트를 넣는 기법

예상피해 : 사이트 접속자의 쿠키, 세션등의 정보유출, 의도치않은 행동수행 등

<script>
alert<document.cookie);
</script>
예방방법 : xss필터를 만든 뒤, wab.xml에 선언하여 모든 파라미터값이 해당 필터를 거치도록 함
 
 
 
 
 
# 회고
아무렇지 않게 매일 사용하던 브라우저나 웹서버에 대한 개념에 이해를 하고나니 대략적인 그림이 그려지기 시작했다.
브라우저가 무슨일을 하고 웹서버가 어떤일을 하는지 대략적으로나마 알게되니 흥미가 생기고 재밌어진다.
웹을 직접 개발해보고, 개발하는 과정에서 구조적인 문제로 발생하는 취약점등 각종 공격기법과 방어기법들이 새롭고 흥미롭다.
아직도 배울게 너무많지만 모르는 분야에 대한 설레임과 호기심은 언제나 좋은것 같다.
복습을 너무 안하고 있어서 다시 마음가짐을 잘 해봐야겠다.

 

'웹, 백엔드' 카테고리의 다른 글

AWS-EC2, AMP, PHP, DB 환경설정  (0) 2021.11.18