[CS] 웹 요청 전체 과정 정리하기
·
CS
학생이 노트북을 학교 캠퍼스 네트워크에 연결하고 www.google.com을 요청한다고 해보자! 과정을 1단계에서 4단계까지 정리해보자. 1단계: 인터넷 연결 - DHCP (Dynamic Host Configuration Protocol)상황노트북이 네트워크에 연결되었지만, IP주소가 없다. First-hop router(게이트웨이) 주소를 모른다. DNS 서버 주소를 모른다. 네트워크 연결을 하기 위해서는 위 세 가지 정보가 필요하다. DHCP 과정1. DHCP DiscoverApplication Layer: DHCP Discover 메시지를 생성한다. Src: 0.0.0.0:68 -> Dest: 255.255.255.255:67전송 방식: Broadcast (모든 장치에게 전송한다.) 캡슐화 ..
DHCP client-server 시나리오 (초-카와이 교수님이 강의실에서 대학원생을 찾는 건에 대하여, 브로드캐스트지만 사랑만 있으면 상관없잖아?)
·
CS
DHCP란?호스트에 IP주소를 수동으로도 할당할 수 있지만, DHCP(Dynamic Host Configuration Protocol, 동적 호스트 구성 프로토콜)이 더 많이 쓰인다. DHCP는 말그대로 호스트가 IP주소를 자동으로 얻을 수 있게 해준다. Plug-and-play protocol or zero-configuration protocol이러한 특성 때문에 플러그 앤 플레이 프로토콜 또는 제로 구성 프로토콜이라고도 한다. 예를 들어 학교에서 WIFI를 사용한다고 해보자. 나는 신공학관에서 정보문화관으로 이동하면서 새로운 IP주소가 필요할 것이다. 많은 사용자가 이동하고, 주소들이 제한된 시간에서만 필요한 경우 수동 할당보다는 DHCP가 적합하다. client-server 프로토콜DH..
[인덱스 채우기] 인덱스란?, B-Tree(+B+Tree), 클러스터 인덱스
·
CS
✅ 인덱스를 머리에 채우기인덱스가 당연히 있어야 하고 당연히 좋다고 생각하기 쉬운데...인덱스가 없더라도 데이터베이스가 작동하는 데에는 문제가 없다. 오히려 인덱스를 관리하는 데 비용이 증가할 수 있고, 성능도 저하될 수 있다. 하지만 데이터베이스의 크기가 커지면 인덱스의 필요성이 커진다. 인덱스는 그냥 있는 것이 아니라 다양한 인덱스 구조와 활용 방법이 있고 비용과 성능 측면을 고려하여 도입해야 한다. 그래서 인덱스를 머리에 좀 채워보려고 한다. 인덱스는 데이터의 읽기(SELECT) 속도를 빠르게 만들어주는 역할을 한다.다만, 그 대가로 데이터의 쓰기 작업(INSERT, UPDATE, DELETE) 성능에 영향을 준다. 변경 작업이 자주 일어나거나, 인덱스가 적절하지 않으면 paging이 빈번해져 성능..
잘못된 보안 설정
·
CS
잘못된 보안 설정➡️ 디렉터리 인덱싱, 정보 누출, 관리자 페이지 노출, 위치 공개, 웹 서비스 메소드 설정 공격➡️ 환경 설정 파일에 있는 보안 관련 항목의 값을 수정, 불필요하게 존재하는 파일의 삭제, 접근 가능한 IP만 허용하게 하는 접근 제어 등을 통해 조치 1) 디렉터리 인덱싱 취약점✅ 디렉터리 내의 파일 정보들이 노출된다.웹 루트 디렉터리에 기본적으로 호출할 파일(Default.html, index.thml 등)이 없을 경우, 디렉터리 내의 파일 리스트를 웹 브라우저에 표시한다.🔍 디렉터리 인덱싱 취약점을 확인하는 방법웹 페이지 요청 시 도메인명 하위의 파일명과 변수명, 변수값을 확인하고 디렉터리 이름만 입력(끝에 '/'까지 입력)하거나 URL뒤에 %3f.jsp, %23.jsp를 입력한다.e..
입력 값 조작 공격
·
CS
01장. 입력 값 조작 공격입력 값 조작 공격은 개발 단계에서부터 서버 측에서 입력 값을 검증하여 예방하는 방법이 가장 효과적이다. 1.1 운영체제 명령 실행대부분의 공격은 URI의 변수 값에 시스템 명령을 삽입해 Request 패킷을 조작함으로써 이루어진다. (ex. http://도메인명/download.jsp?filename=;/bin/ls -al)따라서 운영체제 명령 실행 공격의 대상이 되는 취약한 함수들은 가급적 사용하지 않는 것이 좋다.예를 들어, Java(Servlets, JSP)의 경우 System.* (특히 System.Runtime)이 공격당하기 쉽다.변수 입력 값에 대해 입력 가능한 문자열을 지정한 후, 지정한 문자열 이외의 나머지 문자열에 대해서는 필터링을 수행하면 된다.(명령어 ..