목록학습 (13)
나의 독학은
✅ 정규식의 장점 많은 양의 텍스트 파일 중에서 원하는 데이터를 손쉽게 뽑아낼 수 있다. 입력된 데이터가 형식에 맞는지 체크할 수 있다. ✅ Pattern 과 Matcher Pattern : 정규식을 정의하는데 사용 Matcher : 정규식을 데이터와 비교하는 역할 1. 정규식을 매개변수로 Pattern클래스의 static메서드인 Pattern compile(String regex)을 호출하여 Pattern인스턴스를 얻는다. Pattern p = Pattern.compile("c[a-z]*"); // c로 시작하는 영단어 2. 정규식으로 비교할 대상을 매개변수로 Pattern클래스의 Matcher matcher(Charsequence input) 를 호출해서 Matcher인스턴스를 얻는다. Matcher..
AssertJ 공식 문서 : https://www.javadoc.io/doc/org.assertj/assertj-core/latest/index.html isEqualTo : 실제값과 예상값이 같은지 판단하는 함수 int a = 1; int b = 2; assertThat(a+b).isEqualTo(3); // 테스트 성공! assertThat(실제값).isEqualTo(예상값) hasSameHashCodeAs, doesNotHaveSameHashCodeAs : 실제값와 예상값의 해시코드가 일치 여부를 판단 /* HashCode 일치 여부는 isEqualTo와 함께 동일한 VO 객체인지 판단하는데 쓰인다. */ Position first = new Position(3); Position second = ..
11.1 웹 애플리케이션에 대한 공격 패턴 ✅ 능동적 공격 : 공격자가 웹 애플리케이션에 액세스해서 공격 코드를 보냄 ex) SQL인젝션, OS 커맨드 인젝션 ✅ 수동적 공격 : 함정을 이용해서 유저가 공격 코드를 실행시키는 공격 ex) 크로스 사이트 스크립팅(XSS), 크로스 사이트 리퀘스트(CSRF) 11.2 출력 값의 이스케이프 미비로 인한 취약성 ❗❗이스케이프 : 특정 문자나 문자열을 일반 텍스트로 해석하지 않고 특별한 용도로 사용하기 위해 특수한 문자로 처리하는 것 ex) 역슬래시(\)를 사용하여 특수한 문자를 나타냄. \n (줄 바꿈 문자) , \t (탭 문자) , \\ (역슬래시 자체) ✅ 크로스 사이트 스크립팅 - 동적으로 HTML을 생성하는 부분에서 취약성이 발생 - 아이디와 패스워드를 ..
9.3 브라우저에서 양방향 통신을 하는 WebSocket ✅ WebSocket 프로토콜 - 핸드쉐이크로 최초 접속할 때는 HTTP 프로토콜을 이용, 그 후로는 WebSocket 프로토콜 이용 - 한 번 접속을 하면 서버와 클라이언트 어느 쪽에서도 송신이 가능하다. ✅ 특징 1. 서버 푸시 기능 → 서버는 클라이언트의 리퀘스트를 기다리지 않고 데이터 보냄 2. 통신량의 삭감 → 접속을 유지함으로써 접속하는데 필요한 오버헤드의 양과 헤더의 사이즈를 줄임 3. 실시간 네트워킹 → 채팅, 주식, 비디오 데이터 등 실시간 데이터가 필요한 곳에 사용 4. 핸드쉐이크/리퀘스트 및 리스폰스 → HTTP의 Upgrade 헤더 필드를 사용하여 핸드쉐이크를 실시함. 핸드쉐이크 리퀘스트 메시지 핸드쉐이크 리스폰스 메시지 내용..
8.4 SSL 클라이언트 인증 - HTTPS의 클라이언트 인증서를 이용한 인증 방식 ✅ SSL 클라이언트 인증의 인증 수순 1. 인증이 필요한 리소스의 요청이 있을 경우 서버는 클라이언트에게 클라이언트 인증서를 요구하는 "Certificate Request" 메시지를 송신 2. 유저는 송신할 클라이언트 증명서를 선택 후, "Client Certificate"라는 메시지와 함께 증명서 송신 3. 서버는 클라이언트 증명서를 검증함. 결과가 정확하다면 클라이언트의 공개키를 취득한 후, HTTPS에 의한 암호를 개시함. ✅ SSL 클라이언트 인증은 2-factor 인증에서 사용 *2-factor 인증 : SSL 클라이언트 인증과 다른 인증 방법을 함께 사용하는 인증 방식 ex) SSL인증 + 폼 베이스 인증 o..
HTTP & Network 책을 공부하다가 이 책은 HTTP 1.1을 기준으로 설명하고 있다는 것을 알았다. 찾아보니 우리는 HTTP 2를 주로 쓰고 있었기에 이 책을 그대로 공부해도 될 까? 란 의문이 들었고 테코톡을 이용해 답을 찾아보고자 한다. HTTP 1.1의 한계 ✅ HOL Blocking (Head of Line Blocking) - 파이프라인의 한계로 생기는 문제점이다. 예를 들어, 아래와 같이 클라이언트가 서버에게 요청 1,2,3을 보냈고 서버는 요청에 대한 응답1,2,3을 해준다 클라이언트 -------요청 1-------> -------요청 2-------> -------요청 3-------> 서버
7.1 HTTP의 약점 ✅ 암호화 하지 않은 통신이기 때문에 도청이 가능 원인 : TCP/IP 기반의 통신은 전부 통신 도중에 엿볼 수 있다. 해결 : - SSL(Secure Socket Layer)이나 TLS(Transport Layer Security)라는 다른 프로토콜을 HTTP와 조합하여 통신을 암호화 - HTTP메시지에 포함되는 콘텐츠만 암호화 ✅ 통신 상대를 확인하지 않기 때문에 위장이 가능 원인 : HTTP를 사용한 리퀘스트나 리스폰스는 누가 보냈는지 누가 응답했는지 상대를 확인하지 않는다 해결 : SSL에서 제공하는 증명서를 통해 증명서를 갖고 있는 상대에게만 요청 및 응답한다. ✅ 완전성을 증명할 수 없기 때문에 정보 변조가 가능 원인 : 통신 중에 콘텐츠가 다른 것으로 바뀌었을 수도 있..
6.1 HTTP 메시지 ✅ HTTP 메시지 구조 (리퀘스트 메시지, 리스폰스 메시지) 6.2 HTTP 헤더 필드 ✅목적 - 클라이언트와 서버간의 통신을 위해 - 중요한 정보 전달을 위해 - 메시지 바디의 크기나 사용 언어, 인증 정보를 서버에 제공하기 위해 ✅구조 - 헤더 필드 명 : 필드 값 ex) Content-Type : text/html ✅ HTTP 헤더 필드는 4종류로 나뉜다 - 일반 헤더 필드 - 리퀘스트 헤더 필드 - 리스폰스 헤더 필드 - 엔티티 헤더 필드 ✅ HTTP1.1 이외의 헤더 필드 Set-Cookie, Content-Disposition와 같이 RFC에 정의되어 폭 넓게 사용되기도 한다. *RFC : HTTP, TCP/IP, DNS와 같이 인터넷에 쓰이는 기술들을 다 적어 놓은 ..