WEB2 study 1주차

과제 1. web 환경 문서화

인터넷: TCP/IP를 사용하는 컴퓨터 연결 통신망 그중 웹(World Wide Web)은 하이퍼텍스트 구조를 활용하여 정보를 연결하고 사이트들을 거미줄처럼 엮은 인터넷이다.

WEB의 구성

1. HTTP 프로토콜: 통신을 위한 규칙

2. HTML: 하이퍼텍스트 작성을 위한 도구

3. URL: 사이트 주소

WEB의 동작 구성

  프론트엔드 백엔드
해석 위치 클라이언트 서버
문서 static dynamic
처리 방식 수동, 고정 실시간
통신 방식 단방향 양방향
제작 기술 HTML, CSS, JavaScript PHP, Java, C++ 등
프레임워크  Angular JS Bootstrap Express Laravel

제작 기술

1. HTML(프론트)

웹 언어이다. 구성 요소로는 태그, 속성, 내용으로 나뉜다.

a. <form>: 프론트에서 입력받은 데이터를 한 번에 서버로 전송하는 양식

데이터를 전송하는 웹 URL은 action이라고 하는데, 데이터 전송 HTTP 방식을 담은 method가 두 가지 존재한다.

  1. GET 요청 : ?comment=swing 이런 식으로 링크에 같이 붙는다. 흔적이 남는다.

  2. POST 요청 : method="post" 이런 식으로 요청 body에 들어간다.

b. <input>: 클라이언트가 입력할 수 있는 태그 

속성 속성 값
text 텍스트 입력
radio 선택 목록중에 하나
checkbox 선택 목록중에 여러개
password 암호
button 버튼 누르기
reset 입력값 초기화
submit 서버로 전송
name 이름
value 입력 초기값

c. <select>:

속성 설명
name 상자 이름
size 표시할 항목 개수
multiple 복수 선택 가능 

2. javascript(프론트)

웹 페이지를 동적으로 만드는 인터프리터 언어이다.

*인터프리터 언어: 컴파일 작업 거치지 않고 바로 실행하는 언어 (비슷한 언어로 파이썬)

문법은 <script> </script> 로 표시

주석 //(한 줄 주석) 혹은 /\*(어쩌구저쩌구)\*/(여러 줄 주석)
출력 window.alert(), document.write, console.log(), innerHTML
선언 var(변수 선언+값 초기화), let(블록 스코프 지역변수 선언+값 초기화), const(블록 스코프 읽기 전용 상수 선언) 
데이터 타입 boolean, null, undefined, number, bigint, string, symbol, object(객체 타입)

3. PHP(백)

서버 측 스크립트 언어이다. PHP로 작성한 코드를 HTML 소스 내부에 삽입하면, PHP 엔진을 이용한 동적 웹페이지가 생성된다.

장점

  1. 오픈소스 + 저렴하다.
  2. 대부분 서버에서 지원 가능하다.
  3. 자료구조가 간편하고, 내장 함수가 많다.
  4. 직관적이기 때문에 작성 코드 분량이 적다.
  5. HTML 문서 처리에 적합하다.

단점

  1. 보안에 취약하다.
    RCE, XSS, SQL injection, PHP Configuration, File system attack
  2. 복잡한 사이트 구축이 힘들다.

php 동작 원리

  1. 브라우저가 웹서버로 요청을 보낸다.
  2. 웹서버는 PHP 파서한테 스크립트 실행 요청을 보낸다.
  3. PHP 파서는 DB와 연결하여 작업을 수행한다.
  4. 처리 결과를 웹서버로 전달하고
  5. 웹서버는 브라우저에게 응답을 보낸다.

문법은 <?php 어쩌구저쩌구 ?> 로 표시

주석 //(한 줄 주석), /\* 어쩌구저쩌구 \*/(여러 줄 주석), #(한 줄 쉘 스타일 주석)
선언 $(변수 선언), $$(가변변수 선언, 변수의 값->변수 이름)

*echo; HTML 스트링에 문자 출력

모의 해킹 팀 소개 및 용어

레드팀: 공격자 관점, 블루팀: 방어자 관점

Attack surface/Vector: 공격 지점/경로

취약점: 공격 시 활용하는 부분

PoC: 취약점을 이용해서 공격이 가능하다는 걸 증명하는 코드 

Exploit: 실제 공격 코드 

이부분은 2-2에 수강했던 윈도우즈보안과운영실습 기말 자료를 넣으면 좋을 거 같아 첨부하였다(스윙 스터디와는 무관)

client side attack

클라이언트 겨냥한 취약점이다. XSS(클라이언트를 공격해서 쿠키/세션 탈취), SQL injection(서버 내 데이터베이스 정보 탈취) 등이 존재한다.

server side attack

서버에 있는 취약점을 겨냥하여 수행하는 공격을 말한다. Command 인젝션(서버 파일 탈취, 명령어 원격 실행) 등이 있다.