Hyper Text Transfer Protocol Secure ocket layer
= HTTP over SSL(TLS)
= HTTP over Secure
HTTP 통신 시 SSL or TLS 알고리즘을 이용해 테이터를 암호화하여 전송하는 방법
어떤 문자열에 임의의 연산을 적용하여 다른 문자열로 변환하는 것
변환하는 시간이 오래걸리지 않아야 함
모든 값은 고유한 해시값을 가짐
작은 단위의 변경이더라도 완전히 다른 해시값을 가져야 함
암호화할 값에 별도의 값을 추가하여 결과를 변형하는 것
hashing(평서문 + salt) ➡️ 암호문
암호화 알고리즘만으로 암호화
➡️ 알고리즘 유추 가능😮
➡️ 별도의 문자열을 추가하면 알고리즘이 노출되더라도 원본 값을 보호할 수 있음❗️
유저와 패스워드별 고유한 값을 가져야 함 ➡️ 계정/패스워드 생성 때마다 새로운 임의의 salt로 해싱
salt 재사용 금지
salt는 DB의 유저 테이블에 함께 저장
클라이언트에 저장되는 작은 데이터 파일
이름, 값, 만료 날짜/시간(쿠키 저장기간), 경로 정보 등을 포함
서버에서 옵션 지정 후 set-Cookie 프로퍼티에 쿠키를 담아 전송
쿠키를 이용한 상태 유지
http의 stateless를 stateful하게 연결 가능
❗️but 쿠키에 민감한 정보 담지 않도록 주의
서버에서 클라이언트에 데이터를 저장할 수 있음
데이터 저장, 가져오기 가능 ➡️ 아무때나 x 특정 조건(옵션)을 만족해야 가능
Domain : 도메인이 일치해야 함
ex) naver.com에서 받은 쿠키를 google.com으로 전송할 수 없엄
Path : 세부 경로 -> 설정된 path를 만족해야 함
MaxAge or Expires : 쿠키의 유효시간
사용자가 인증에 성공한 상태, 하나의 서버에만 접속 상태를 저장
session-id로 구분 : 클라이언트가 인증을 증명하는 수단
웹 사이트에서 로그인을 유지하는 수단 : 쿠키 (세션아이디 저장)
쿠키 노출 = 세션 노출
ex) SELECT * FROM USERS WHERE auth='admin' AND id = ''OR '1' = '1'';
항상 참인 값을 넣어서 로그인 성공, 탈취
대응 방안
해커가 데이터에 직접 접근할 수 없음 (Origin이 다르기 때문)
조건
대응 방안