: 티스토리에 있던 글 백업
인터넷: 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>
| action | 데이터를 전송할 웹 URL | ||
|---|---|---|---|
| method | 데이터 전송 HTTP 방식 | GET 요청 | 흔적이 남는다 ![]() |
| POST 요청 | ![]() |
||
| name | 폼 이름 |
b. : 클라이언트가 입력할 수 있는 태그
| 속성 | 속성 값 | |
|---|---|---|
| type | text | 텍스트 입력 |
| radio | 선택 목록중에 하나 | |
| checkbox | 선택 목록중에 여러개 | |
| password | 암호 | |
| button | 버튼 누르기 | |
| reset | 입력값 초기화 | |
| submit | 서버로 전송 | |
| name | 텍스트 | 이름 |
| value | 텍스트 | 입력 초기값 |
_c.
| 속성 | 설명 |
|---|---|
| name | 상자 이름 |
| size | 표시할 항목 개수 |
| multiple | 복수 선택 가능 |
2. javascript(프론트)
웹 페이지를 동적으로 만듦, 인터프리터 언어
*인터프리터 언어: 컴파일 작업 거치지 않고 바로 실행하는 언어
| 로 표시 | ||
|---|---|---|
| 주석 | // | 한 줄 주석 |
| /*(어쩌구저쩌구)*/ | 여러 줄 주석 | |
| 출력 | window.alert() | |
| document.write | ||
| console.log() | ||
| innerHTML | ||
| 선언 | var | 변수 선언+값 초기화 |
| let | 블록 스코프 지역변수 선언+값 초기화 | |
| const | 블록 스코프 읽기 전용 상수 선언 | |
| 데이터 타입 | 원시 타입 | boolean |
| null | ||
| undefined | ||
| number | ||
| bigint | ||
| string | ||
| symbol | ||
| 객체 타입 | object |
*동적 타이핑
3. PHP(백)
서버 측 스크립트 언어. PHP로 작성한 코드를 HTML 소스 내부에 삽입 -> PHP 엔진을 이용한 동적 웹페이지 생성
| 장점 | 단점 | |
|---|---|---|
| 오픈소스+저렴 | 보안에 취약 | 원격 코드 실행 |
| 대부분 서버에서 지원 | XSS | |
| 자료구조 간편, 내장 함수 多 | SQL 인젝션 | |
| 직관적->작성 코드 분량 ↓ | PHP Configuration | |
| HTML 문서 처리에 적합 | 파일 시스템 공격 | |
| 복잡한 사이트 구축 힘들다 |
php 동작 원리
| 브라우저 | 웹서버 | PHP 파서 | 데이터베이스 |
|---|---|---|---|
| 1. 요청 보내기 -> | 2. 스크립트 실행 요청 -> | 3. 데이터베이스와 연결하여 작업 수행 | |
| <- 5. 웹 페이지 응답 | <- 4. 처리 결과 전달 |
| <?php 어쩌구저쩌구 ?> | ||
|---|---|---|
| 주석 | // | 한 줄 주석 |
| /* 어쩌구저쩌구 */ | 여러 줄 주석 | |
| # | 한 줄 쉘 스타일 주석 | |
| 선언 | $ | 변수 선언 |
| $$ | 가변변수 선언 변수의 값->변수 이름 |
*echo; HTML 스트링에 문자 출력
레드팀: 공격자 관점
블루팀: 방어자 관점
Attack surface/Vector: 공격 지점/경로
취약점:공격 시 활용하는 부분
PoC: 취약점을 이용해서 공격이 가능하다는 걸 증명하는 코드
Exploit: 실제 공격 코드
| client side attack | 클라이언트 겨냥한 취약점 | XSS: 클라이언트를 공격해서 쿠키/세션 탈취 |
|---|---|---|
| server side attack | 서버 겨냥한 취약점 | SQL 인젝션: 서버 내 데이터베이스 정보 탈취 |
| Command 인젝션: 서버 파일 탈취, 명령어 원격 실행 |

