목록3-1 (50)
발자취
VMware 가상머신에서 직접 Backdoor 공격을 진행해보고 해당 공격을 탐지 및 차단하는 실습을 진행해보았다. 01. Backdoor란? - 정상적인 인증 절차를 거치지 않고, 컴퓨터나 암호 시스템 등에 접근할 수 있도록 하는 방법 - 개발 단계에서의 테스트, 유지 보수 시의 효율성을 위해 시스템 설계자 및 관계자가 고의로 남겨둔 시스템 보안 허점 → 원격 접속, 정보 탈취 등의 악용 가능성이 있다 사용자가 모르게 악성행위를 실행하기 위한 통로를 만드는 행위를 할 때 주로 백도어 공격을 한다. 02. Backdoor 공격 실습 공격 실습에 앞서 공격 환경 구성 및 시나리오와 사용 공격 툴에 대한 간단한 설명을 할 것이다. 1. 공격 환경 구성 및 시나리오 [공격 환경] - 공격자 PC: Kali (..
#01 JDBC - 자바에서 DBMS에 접속하기 위한 API(패키지) 1. JDBC 프로그램 구조 - 빌더 패턴 DriverManager -> Connection -> Statement (-> ResultSet) (1) 드라이버 로딩 - 자바 리플렉션(Reflection)의 다이나믹 클래스 로딩Class.forName(...); (2) DB 연결 -> Connection 오브젝트 생성Connection conn = DriverManager.getConnection(dburl, id, password); (3) Statement 오브젝트 생성(SQL을 넣어서 실행하는 오브젝트)Statement stmt = conn.createStatement(); (4) Statement 실행(execute..
#01 Like 검색 - 문제점: 조건에 맞는 레코드를 찾아도 검색이 종료되지 않고 계속 전체검색을 진행 → 시스템에 부하를 주는 구조 (만약 AND/OR 형태로 연결되는 쿼리라면? 더 심한 부하..) #02 전문검색 - 와일드카드 검색(Like)의 대안 → 유사한 결과 제공 - 크게 Stopword 방식과 N-gram 방식으로 나뉨 #02-1 전문검색 - Stopword - 구분자를 기준으로 분할하는 방식 - 영어에서는 be동사, 정관사, 부정관사, 전치사 등을 제외한 결과(불용어) - 한글에서는 애매함 #02-2 전문검색 - N-gram - 기계적으로 N개의 글자단위로 토큰(작은 문자열)으로 나눔 - 2-gram - “아버” “버지” “지가” “방에” “들어” “어가” “가신” “신다..
#01 NoSQL - 기존의 RDBMS가 읽기 최적화인데 반해 쓰기 최적화된 시스템 - 현재의 NoSQL - 읽기 최적화된 RDBMS와 쓰기 최적화된 NoSQL을 합쳐서 서로의 약점을 보완함 1. NoSQL 분류 (1) CAP 이론 - 일관성(Consistency): 여러 개의 클라이언트가 조회해도 데이터가 항상 일정 - 가용성(Availability): 노드가 장애가 발생해도 읽기/쓰기에는 문제 없는 성질 - 파티션 내성(Partition Tolerance): 네트워크가 분리되도 개별 서비스는 문제 없는 성질 → 3가지를 모두 제공하는 시스템은 없다 -> 2개만 제공 (CA, AP, CP) (2) 저장방식 - Key/Value Store - Ordered Key..
#01 역정규화 - 정규화를 포기하고 중복을 허용하는 경우 - 속도 향상을 위해 사용 - 예 - 샤딩, VLDB - 기사의 대댓글을 관리하기 위해 기사테이블 - 댓글테이블 - 대댓글테이블의 형태로 테이블을 둠. 이러면 대댓글 관리 속도가 빨라짐! #02 DML etc. 실습1. Like 검색last_name이 ‘sample’인 레코드를 찾아 조회했습니다. like 검색과 ‘%’ 기호를 사용하여 last_name이 ‘sam’으로 시작하는 레코드를 찾아 조회했습니다. last_name이 ‘sam’으로 끝나는 레코드를 찾아 조회했습니다. last_name의 처음, 끝, 중간에 ‘sam’이 들어가는 레코드를 찾아 조회했습니다. last_name이 ‘sam’으로 시작하고 6글자인 레코드를 찾아 조회했..
#01 대응수 최적화 (다대다에서 1대다로) - 기본적으로 모든 관계는 M:N(다대다) 관계 - Entity - Relationship - Entity 3개의 테이블이 필요함 - 필요하지 않은 경우엔 1대다로 축소할 수 있음 (이력관리가 필요한 경우엔 다대다, 아니면 1대다 형태여도 됨!) #02 정규화 - 데이터 중복 방지를 위해 사용하는 모델링 기법 (공간 낭비를 방지하기 위해) - 정규화를 통하면 여러 개의 테이블로 분리됨 - 필요시에 조인을 통해 큰 테이블로 합칠 수 있음 - 정규형 1. 제1정규형(1NF) - multi-value 금지 (1) 취미 - 독서, 영화감상 (x) (2) 취미 - 독서 취미 - 영화감상 (O) 2. 제2정규형(2NF..
DML 실습1. GROUP BYgroup by는 동일한 값을 가진 행을 요약행으로 그룹화합니다.성별로 그룹화하여 ‘M’과 ‘F’가 각각 몇 명씩인지 emp_no의 개수를 세서 확인했습니다. 2. HAVINGsalaries 테이블에서 동일한 salary 값을 갖는 사람들끼리 그룹화한 뒤, salary 값이 100000을 넘는 경우만 조회했습니다. charset/collation 실습1. charset/collation 확인show create table employees\G를 입력해보면 charset으로 ‘utf8mb4’를, collate로 ‘utf8mb4_0900_ai_ci’를 사용하는 것을 확인할 수 있습니다. 2. COLLATION위에서 확인한 대로 collate로 ‘utfmb4_0900_ai_ci..
DCL 실습1. 사용자 생성local에서 접속할 수 있는 비밀번호가 ‘passwd’인 ‘user1’ 사용자를 생성했습니다. 2. 사용자 삭제‘user1’ 사용자를 삭제해보았습니다. 3. 권한부여/권한반영/권한확인/권한삭제다시 user1 계정을 생성한 뒤, user1 계정으로 로그인했습니다. user1의 현재 권한을 확인했습니다. 아무 권한도 부여되지 않은 상태임을 확인할 수 있습니다.권한이 없기 때문에 use employees를 입력해보면 접근이 거부되었다는 에러 메시지가 출력됩니다. 다시 root 계정으로 로그인한 뒤, ‘user1’ 계정에 모든 DB의 모든 테이블에 대해 CRUD 권한을 부여해줬습니다. flush privileges;를 통해 권한을 반영했습니다. ‘user1’ 계정에 권한이 제대로 부..
DDL 실습1. CREATE DBcreate database를 통해 testDB라는 데이터베이스를 생성했습니다. 2. DROP DBdrop database를 통해 testDB를 삭제했습니다. 3. CREATE TABLE다시 testDB를 만들고 use로 testDB를 사용하도록 설정한 뒤, testTable이라는 테이블을 만들었습니다. int형의 ID 컬럼, varchar형의 Last Name과 FirstName 컬럼, int형의 Age 컬럼을 갖는 테이블입니다. 4. DROP TABLEdrop table로 testTable을 삭제한 뒤, desc와 show 쿼리문을 통해 확인했습니다. 5. TRUNCATE TABLEtruncate 사용 전, 후의 결과를 비교하기 위해 sampletable에 레코드 3개..
#01 간단한 exERD 활용 실습 1. exERD 새 모델링 파일 생성하기[파일] – [새로 작성] – [exERD File]에서 대상 DBMS를 MySQL로 설정한 뒤 완료를 누릅니다. 2. 테이블 추가하기‘새 테이블을 만듭니다.’ 아이콘을 눌러 ‘학생’, ‘수강’, ‘교수’ 테이블을 생성했습니다. 3. 기본키 지정하기[Ctrl+Shift+Enter]를 눌러 기본키를 생성합니다. 각 테이블에 ID라는 이름의 기본키를 생성했고, INTEGER 타입으로 설정했습니다. 4. 컬럼 지정하기[Ctrl+Enter]를 눌러 컬럼을 생성합니다. ‘학생’과 ‘교수’ 테이블에 ‘이름’. ‘이메일’, ‘전화번호’, ‘나이’, ‘성별’ 컬럼을 추가했고, 수강 테이블에 ‘과목명’ 컬럼을 추가했습니다. 5. 물리 모델..