: 티스토리에 있던 글 백업
인터넷: 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 인젝션: 서버 파일 탈취, 명령어 원격 실행 |