과제 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가 두 가지 존재한다.
-
GET 요청 :
?comment=swing이런 식으로 링크에 같이 붙는다. 흔적이 남는다.
-
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 엔진을 이용한 동적 웹페이지가 생성된다.
장점
- 오픈소스 + 저렴하다.
- 대부분 서버에서 지원 가능하다.
- 자료구조가 간편하고, 내장 함수가 많다.
- 직관적이기 때문에 작성 코드 분량이 적다.
- HTML 문서 처리에 적합하다.
단점
- 보안에 취약하다.
RCE, XSS, SQL injection, PHP Configuration, File system attack - 복잡한 사이트 구축이 힘들다.
php 동작 원리
- 브라우저가 웹서버로 요청을 보낸다.
- 웹서버는 PHP 파서한테 스크립트 실행 요청을 보낸다.
- PHP 파서는 DB와 연결하여 작업을 수행한다.
- 처리 결과를 웹서버로 전달하고
- 웹서버는 브라우저에게 응답을 보낸다.
문법은 <?php 어쩌구저쩌구 ?> 로 표시
| 주석 | //(한 줄 주석), /\* 어쩌구저쩌구 \*/(여러 줄 주석), #(한 줄 쉘 스타일 주석) |
| 선언 | $(변수 선언), $$(가변변수 선언, 변수의 값->변수 이름) |
*echo; HTML 스트링에 문자 출력
모의 해킹 팀 소개 및 용어
레드팀: 공격자 관점, 블루팀: 방어자 관점
Attack surface/Vector: 공격 지점/경로
취약점: 공격 시 활용하는 부분
PoC: 취약점을 이용해서 공격이 가능하다는 걸 증명하는 코드
Exploit: 실제 공격 코드
이부분은 2-2에 수강했던 윈도우즈보안과운영실습 기말 자료를 넣으면 좋을 거 같아 첨부하였다(스윙 스터디와는 무관)

client side attack
클라이언트 겨냥한 취약점이다. XSS(클라이언트를 공격해서 쿠키/세션 탈취), SQL injection(서버 내 데이터베이스 정보 탈취) 등이 존재한다.
server side attack
서버에 있는 취약점을 겨냥하여 수행하는 공격을 말한다. Command 인젝션(서버 파일 탈취, 명령어 원격 실행) 등이 있다.