코드스테이츠 BE Section4 - 1일차

coding infant·2022년 9월 20일

코드스테이츠BE

목록 보기
43/48

다시 힘내서 해보자!

암호화 : 일련의 정보를 임의의 방식을 사용하여 다른 형태로 변환하여, 해당 방식에 대한 정보를 소유한 사람을 제외하고 이해할 수 없도록 알고리즘을 이용해 정보를 관리하는 과정

shiftBy 메서드 : 입력받은 문자열을 입력받느 숫자의 값 만큼 알파벳 순서를 건너뛴 문자로 변환하여 새로운 문자열을 반환

Hashing : 어떠한 문자열에 임의의 연산을 적용하여 다른 문자열로 변환하는 것

  1. 모든 값에 대해 해시 값을 계산하는데 오래 걸리지 않아야 한다 (해시값 해독하는데는 많은 시간 걸려야. 해시값 만들 때에는 적은 시간)

  2. 최대한 해시 값을 피해야 하며, 모든 값은 고유한 해시값을 가진다

  3. 아주 작은 단위의 변경이라도 완전한 다른 해시 값을 가져야 한다 (추측 불가능하도록)

Salt : 암호화해야 하는 값에 어떤 별도의 값을 추가하여 결과를 변형하는 것

  1. 암호화만 해놓는다면 해시된 결과가 늘 동일

  2. 원본값에 임의로 약속된 별도의 문자열을 추가하여 해시 진행한다면 기존 해시값과 전혀 다른 해시값 반환되어 알고리즘 노출되더라도 원본값 보호 (레인보우 테이블)

  3. 기존 : 암호화 하려는 값 -> hash 값

Salt 사용 : 암호화 하려는 값 + Salt 용 값 -> hash 값

Salt 사용 시 주의점

  1. Salt는 유저 별, 패스워드 별로 유일한 값을 가져야 한다 (유저마다 다른 Salt값)

  2. 사용자 계정을 생성할 때와 비밀번호를 변경할 때 마다 새로운 임의의 Salt를 사용해서 해싱해야 한다

  3. Salt는 절대 재사용하지 말아야 한다

  4. Salt는 DB의 유저 테이블에 같이 저장되어야 한다

Cookie : 서버가 웹 브라우저에 정보를 저장하고 불러올 수 있는 수단

해당 도메인에 쿠키가 존재하면, 웹 브라우저는 http 요청시 도메인에게 쿠키를 함께 전달

(Domain - 서버와 요청의 도메인이 일치하는 경우 쿠키 전송, Path - 서버의 요청의 세부 경로가 일치하는 경우 쿠키 전송, MaxAge or Expires - 쿠키 유효기간 설정, HttpOnly - 스크립트의 쿠키 접근 가능 여부 설정, Secure - HTTPS 에서만 쿠키 전송 여부 설정, SameSite - 같은 사이트에서만 쿠키를 사용할 수 있게 하는 설정)

SQL Injection

임의로 SQL 문을 실행할 수 있도록 명령어를 삽입하는 해킹 공격

패스워드에 'OR '1' = '1 을 넣어 보내면 항상 참이므로 모든 사용자의 정보를 반환함

SQL Injection 대응 방안

  1. 입력값 검증 : 화이트리스트(기본 정책이 모두 차단된 상황에서 예외적으로 접근이 가능한 대상을 지정하는 방식)으로 해당 키워드가 들어오면 다른 값으로 치환

  2. Prepared Statememt 구문 사용 : 사용자의 입력이 SQL 문으로 부터 분리되어 방어 가능. 사용자 입력값을 단순 텍스트로 인식

  3. Error Message 노출 금지 : 공격자에게 노출되지 않도록 별도 에러 핸들링 필요

CSRF (Cross-Site Request Forgery)

다른 오리진(cross-site)에서 유저가 보내는 요청을 조작(forgery)하는 것

0개의 댓글