개발관련 도서 38

OSI 7계층

1. OSI 7 계층 가. 1 계층(피지컬 계층) : 물리계층 전기신호를 전달하는 데 초점이 맞추어져 있다. 주요 장비로는 허브, 리피터, 케이블, 커넥터, 트랜시버, 탭이 있다. a) 허브, 리피터 : 네트워크 통신을 중재하는 네트워크 장비 b) 케이블, 커넥터 : 케이블 본체를 구성 c) 트랜시버 : 컴퓨터의 랜카드와 케이블 연결 d) 탭 : 네트워크 모니터링과 패킷 분석을 위해 전기 신호를 다른 장비로 복제 -> 1 계층에서는 들어온 신호를 그대로 잘 전달하는 것이 목적이므로, 전기신호를 재 생성하여 내보낸다. 주소의 개념이 없으므로 전기신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호를 전송한다. 나. 2 계층(데이터 링크 계층) 전기신호를 모아 우리가 알아볼 수 있는 데이터 형태로 처리..

1. VPN(Virtual Private Network)

1. VPN : Virtual Private Network 가입자 입장에서의 VPN, 통신사업자 입장에서의 VPN 1) 통신사업자 VPN : 본사-지사, 지사-지사간의 연결은 대부분 MPLS VPN 기술을 사용한다. (MPLS VPN이란 여러 가입자가 하나의 MPLS 망에 접속되지만, 가입자를 구분할 수 있는 기술을 적용해 전용선처럼 사용한다. 2) 가입자 VPN : VPN을 통해 일반 인터넷 회선을 전용망처럼 구성해 사용한다. 공중망을 전용선과 같은 사설망처럼 사용하기 위해 강력한 보안을 도입해야 한다. 이는 IPSEC, SSL과 같은 암호화 기법을 제공하는 프로토콜이 VPN에 주로 사용된다. a. 본사-지사처럼 네트워크 대 네트워크 연결에는 IPSEC VPN 기술이 사용된다. b. 개인사용자가 본사 ..

centos7로 리눅스 이해하기

ch1.리눅스의 이해 1. 운영체제 1) 하드웨어 - 응용프로그램 간의 다리역할 - 커널 2) cpu, 주기억장치, 입출력장치 등 컴퓨터 하드웨어를 효울적으로 관리 3) 시스템 자원을 스케줄링하여 효울적으로 활용 4) 운영체제는 사용환경에 따라 서버(웹서버, 메일서버, DNS서버), 데스크톱(개인용 컴퓨터), 모바일 및 임베디드 ch2. 리눅스 설치하기 https://m.blog.naver.com/elepartsblog/222205998011 윈도우 10에서 WSL(Windows Subsystem Linux)로 우분투 설치하기 기존 윈도우 환경에서 리눅스를 같이 사용하기 위해서는 VMware같은 가상머신을 사용해 리눅스를 설치해 ... blog.naver.com

개발관련 도서 2022.01.20

제11장 웹 공격 기술

1. HTTP에는 보안 기능이 없다. 웹사이트 대부분은 인증이나 세션 관리, 암호화 등의 보안 기능이 필요하지만 이들은 HTTP에 존재하지 않는다. SSH 프로토콜에는 프로토콜 레벨에서 인증이나 세션 관리 등의 기능이 준비되어 있지만 HTTP에는 없다. 따라서 웹 애플리케이션에서 인증이나 세션 관리 기능을 개발자가 설계하고 구현해야 한다. 2. 웹 애플리케이션에 대한 공격 1) 서버를 노리는 능동적 공격 능동적 공격은 공격자가 직접 웹 애플리케이션에 액세스 하는 공격 코드를 보내는 타입의 공격이다. 이 타입의 공격은 서버상의 리소스에 대해 직접 실행된다. 대표적인 예로는 SQL 인젝션과 OS 커맨드 인젝션 등이 있다. 2) 유저를 노리는 수동적 공격 일반적으로 a. 공격자가 설치한 함정에 유저를 유도하고..

제9장. HTTP에 기능을 추가한 프로토콜/ 제10장 웹 콘텐츠에서 사용하는 기술

1. HTTP의 병목 현상 관련 HTTP에서는 서버의 정보가 갱신되었는지 확인하기 위해 클라이언트가 항상 서버 측에 확인하러 가야 한다. 만약, 서버 상의 정보가 갱신되지 않은 경우에는 불필요한 통신이 발생하게 된다. 리퀘스트는 클라이언트에서만 시작할 수 있고 리스폰스만 받는 것은 불가능하기 때문이다. (서버에서 통신을 개시하는 서버 푸시 기능은 예외) 2. 브라우저에서 양방향 통신을 하는 WebSocket WebSocket프로토콜이란 웹 서버와 클라이언트가 한번 접속을 확립하면 그 뒤의 통신을 모두 전용 프로토콜로 하는 방식으로 JSON이나 XML, HTML, 이미지 등 임의 형식의 데이터를 보내게 된다. HTTP에 의한 접속의 출발점이 클라이언트에 있다는 것은 변함이 없지만 한 번 접속을 확립하면 W..

제 8장 누가 액세스하고 있는지를 확인하는 인증

1. 인증이란? 특정 웹사이트에 들어가기 위해 로그인하는 과정이라고 생각하면 됨. 인증을 위한 수단으로는 아래의 것들이 있다. a. 패스워드 : 본인만 알고 있는 문자열 정보 b. 원타임 토큰 : 본인만이 가지고 있는 기기 등에 표시되는 한 번 쓰고 버리는 패스워드 등의 정보 c. 전자 증명서 : 본인(단말기)만이 가지고 있는 정보 d. 바이오 매트릭스 : 지문이나 홍채 등 본인의 신체 정보 e. IC 카드 등 : 본인 만이 가지고 있는 정보 HTTP에서 사용하는 인증 방법은 BASIC인증, DIGEST인증, SSL클라이언트 인증, 폼 베이스 인증 등이 있다. 구체적인 내용은 아래에서 살펴본다. 2. BASIC 인증 1) BASIC 인증이 필요한 리소스에 리퀘스트가 있을 경우 서버는 401 상태 코드와 ..

7장 HTTPS

1. HTTP의 약점 1) 평문(암호화하지 않은) 통신이기 때문에 도청 가능 HTTP는 자신을 암호화하는 기능이 없기 때문에 통신 전체가 암호화되지 않는다. 즉, 평문으로 HTTP메시지를 보내게 된다. 이를 방지하기 위해 a. 통신 암호화(SSL이나 TLS이라는 다른 프로토콜을 조합해서 HTTP 통신 내용을 암호화할 수 있다.)나 b. 콘텐츠 암호화(콘텐츠 내용 자체를 암호화하는 방법)등을 이용할 수 있다. 2) 통신 상대를 확인하지 않기 때문에 위장 가능하다. HTTP를 사용한 리퀘스트나 리스폰스에서는 통신 상대를 확인하지 않는다. 따라서 누구든지 리퀘스트를 보낼 수 있고 누구든지 리스폰스를 반환할 수 있다. 이를 보완하기 위해 상대를 확인하는 증명서의 기능을 하는 SSL을 활용할 수 있다. SSL은 ..

2. TDD(TestDrivenDevelopment) 시작

1. 암호 검사기능 구현하기 TDD는 처음에 테스트 코드를 작성하고 테스트 코드를 통과시키기 위한 메인 클래스를 작성하고 그 클래스를 중간중간에 리팩터링 한 뒤 다시 한번 테스트하는 과정을 거친다. 리팩터링을 하는 모습을 보면서 왜 코딩 테스트를 기업에서 필수적으로 채용과정에 포함시키는지 조금은 알 것 같다. 인터넷 상에서 누군가 코딩 테스트는 단순 문제풀이에 불과하다고 비판하는 모습을 본 적이 있다. 그런데 계속 코딩을 하고 리팩터링을 하면서 알고리즘 문제 푸는 것이 코딩의 근본 바탕인 것 같다는 생각이 들었다. 2. 테스트 코드 작성 순서 1) 초반에 쉬운 경우에서 어려운 경우로 진행 초반부터 다양한 조합을 검사하는 복잡한 상황을 테스트로 추가하면 해당 테스트를 통과시키기 위해 한 번에 구현해야 할 ..

테스트 주도 개발 시작하기 (TDD)

지금까지 최범균 님 책 Spring 4.0, 5.0, 객체지향과 디자인 패턴 등을 봐왔다. 최범균 님 책은 너무 좋은 것 같다. TDD를 공부시작하기 위해 '최범균저'라는 사실만 보고 이 책을 구매했다. 1. TestDrivenDevelopment 공부 계기 TDD를 공부하게 된 계기는 1) 남들이 흔히 말하길 개발을 할 때 정석은 테스트 코드를 짜한다 그래야 안정적인 프로그램을 만들 수 있다고 해서 2) 코드를 수정하고 재 컴파일을 하기 위해서 톰캣 서버를 계속 껐다 켰다 하는데 시간이 많이 들고 번거로웠다. 3) 데이테베이스를 미리 설계해서 데이터를 집어넣어 놓지 않아도 내가 작성한 코드가 의도한 바대로 잘 작동되는지 확인할 수 있어서 위와 같은 이유로 TDD공부의 필요성을 느끼고 공부를 시작한다.