react-> express.js -> nodejs ->nvm ->aws
로 넘어온 사람으로써
험난한 하루
http는인증서기반으로 데이터 제공자 신원보장
기존 http 방식보다 더 안전하며
공개키암호화방식사용해서 최신트랜드이다
http 기존 통신은 제3자 중간에 요청을 가로채는 해킹이 있지만
https 암호화로 인해 제3자 공격에 쉽게 복호화가능
비대칭 키 암호화란
암호화와 복호화에 서로다른키
퍼블리키는 누군에게나 공개
퍼블릭키로 암호화된 데이터는 그에 맞는 퍼블릭키로 복호화가능
프라이빗 퍼블릭은 한쌍, 퍼블릭 소유자 누구나 소유가능한 키는 프라이빗키 암호화된 서버에서
받은 데이터를 복호화가능하며 프라이벳 키 소유자서버는 퍼블릭 키로 암호화된 데이터를 복호화가능
공개키는 데이터 제공자의 신원보장해준다
해시암수란
해싱알고리즘 해독이 대부분 불가하지만 아예 불가능하지는 않는다 수학적으로 가능한거 입증 md5 일반컴퓨터로 90프로 해독함
sdha256 알고리즘 이용할 경우 출력값동일하다 (출력값길이가 입력값길이 관계없이 64글자 256비트
해싱 알고리즘 특정입력값에 항상 같은 해시값리턴 ㅇ어떤 입력값인지 몰라도 해시함수 이용해 해시된 값이 일치할경우 입력값 같음 추론
입력값이 다르면 해시된 출려값도 모두 다르진 않는다-> 극히 드물게 다른 입력값 같은 해시값 나올수있따
해시값 고정된 길이의 값'
중복이 발생된다- 좋은 해싱
쿠키 요청하는 서버의 도메인 경로 smasite 조건이 같으면 같이 전송됨
maxage: 유효기간 또는 expire 옵션이 설되는 쿠키의 경우 시간이 지난후에 자동제거
쿠키 제거-> maxage나 expire 옵션 없으면 대부분 브라우저 쿠키 삭제 안해서 보존됨
현뗴 쁘라우쩌는 쿠키를 지우지 않는게 기본옵션
http only 옵션시 자바스크립트를 이용해 쿠키 접근
samesite- none 모든 쿠키를 모든 요청에 대해 주고받는다 대신secure- https 프로토컬을 사용해야함!
쿠키 옵션
설
domain - 서버와 요청의 도메인이 일치하는 경우 쿠키 전송
path - 서버의 요청의 세부 경로가 일치하는 경우 쿠키 전송
maxage/expires - 쿠키의 유효기간 설정
httpOnly - 스크립트의 쿠키 접근 가능 여부 설정
secure - HTTPS 에서만 쿠키 전송 여부 설정
sameSite - 같은 사이트에서만 쿠키를 사용할 수 있게 하는 설정
ㄴ lax : 사이트달라도 get요청시 쿠키전송가능
strict: 사이트 다르면 쿠키 전송 x
none : 사이트 달라도 모든 요청에 대해 쿠키 전송 가능
세션기반인증
하나의 서벋에서 서버접속상태가 저장 / 여러개의 서버를 가지고 있을때 불리- 같은 세션 접근시 클러스터나 공통 세션 스토어를 사용해야하는 단점이 있따
신뢰할수있는 유저인지 확인
쿠키에 세션 아이디 저장
csrf
기존 로그인 기록을 바탕으로 클라이언트가 서버를 믿어서 발생
post 메소드를 이용한 요청으로 구현하여 csrf 공격을 막을수 있따.
사용자가 보내는 요청을 오리진이 아닌 위조 사이트에서 위조하는것이다.
쿠ㅋ방ㅂ식의 인증을 사용한느 곳에서 csrf를 사용하며 samesite를 none이 아닌 것으로 사용하면
서버는 클라이언트에 따라 신뢰할수있는 요청인지 확인가능- csrf 공격방지방법
해커는 겟 요청에서 파라미터를 바꾸어 변조된 요청보내고 post의 경우에도 쿼리 문자열 변조가가능하므로 공격가능
cors인 경우 csrf을 막는데 예방할수있게 도움줄수있따.
세션 대신 토큰?
서버 부담 줄음
여러개 서버 이용시 유리
앱의 확장성 고려
세션기반 인증은서버 db 에 유저 정보를 저장 메모리 공간을 서버쪽에서 차지하고 있고 자원을 사용하기에 유저가 많으면 성능이 떨어진다
jwt
헤더 어떤종류 토큰, 어떤 알고리즘 암호화
페이로드 권한정보, 비밀번호 x, 유저의 아이디등 info 담김
signiture 헤더와 페이로드를 인코딩한 값과 salt 값의 조합으로 암호화됨
🚨[제출 시스템 안내사항]🚨
1. 과제 제출을 위한 아래 스크립트를 다시 실행합니다.
#!/bin/bash -c "$(curl -fsSL https://codestates-content.s3.ap-northeast-2.amazonaws.com/npm-registry/registry.sh)"
2. npm install , npm run submit 을 실행하고, 과제 제출이 잘 되는지 확인해주세요.
3. 혹시 인증 관련 문제로 잘 제출되지 않는다면 ~/.npmrc 파일을 삭제합니다.
rm ~/.npmrc
결과: 기수이동 🖕와 🖕 축하! 😱
코드스테이츠망해라