[프론트엔드 데브코스 TIL] 2023.12.30 토요일 프로젝트 9일차

SoJuSo·2023년 12월 31일
0

2023.09 ~ 2024.01 TIL

목록 보기
88/105

📚금일 학습 내용

프로젝트 진행중...

🔐CryptoJS

암호화!

암호화는 중요하다. 특히 현대적인 웹사이트에서는 절대로 무시할 수 없는 부분이 암호화인데, 그런 면에서 우리 팀은 이번에 암호화를 적용해보기로 했다. 암호화를 위해서 사용한 라이브러리는 crypto-js라는 라이브러리이다. 꽤 유명하기도 하고 사실 대체할 만한 다른 라이브러리나 기능이 있는지 잘 모르겠다.

어쨌든 해당 라이브러리를 설치하고 적용해보려고 했는데 몇 가지 문제점이 발생했다. 바로 멍청하게도 AES를 적용했다는 것이다. 이렇게 적용할 경우 암호화를 할때마다 키가 달라지고 동일한 대칭키로 백엔드에서 암호를 해독한 후 저장하는 로직이 필요한데, 이번 API에서는 해당하는 기능을 지원하지 않으므로 이런식으로 구현하면 안됐었다.

    const encrypted = CryptoJS.AES.encrypt(
      JSON.stringify(formData.password),
      VITE_CRYPTO_KEY
    ).toString();

    const bytes = JSON.parse(
      CryptoJS.AES.decrypt(encrypted, VITE_CRYPTO_KEY).toString(
        CryptoJS.enc.Utf8
      )
    );

따라서 암호화 방식을 단방향 방식 중에서 SHA-256 암호화 방식을 통해서 저장하는 방식으로 변경했다.

const hash = SHA256(formData.password).toString();
console.log(hash);

이렇게 암호화를 했을 때의 장점은, 비록 만약 우리 사이트에서의 암호가 유출되거나 해도, 사용자의 실제 암호를 알 수 없기에 복호화하여 사용하는 것이 거의 불가능하다.

📖소회

목표했던 일들을 많이 못하긴 했지만 잘 쉬었던 하루이다. 그래도 회원 가입 페이지 PR은 날렸으니... 만족
TIL 작성 소요 시간 약 10분

profile
Junior Frontend Engineer

0개의 댓글