koownij
54
2021-11-21 18:04:11
4
162

DB에 비밀번호 암호화 시기



안녕하세요! 

사용자의 비밀번호의 경우 암호화해서 저장해야한다고 알고 있습니다.

그러면 


1. 프론트에서 사용자가 입력한 비밀번호를 암호화 한 후 백엔드로 전송

2. 프론트에서 사용자가 입력한 비밀번호를 plain text로  백엔드로 전송한 뒤 백엔드에서 암호화 후 DB 저장


둘 중에 어느 방식으로 하나요..?


간단한 질문이라 구글링하려 했으나 뭐라 검색하면 좋을지 생각이 안나서 질문 올립니다... 

읽어주셔서 감사하고 날이 추운데 다들 감기 조심하세요!!

0
  • 답변 4

  • 지붕뚫고높이차
    1k
    2021-11-21 19:09:01

    2가지가 같이 적용되야 합니다.


    1. 암호화 하는 과정도 보호해야 하니 백엔드

    2. 프론트엔드와 백엔드 사이 전달되는 데이터는 SSL 로 보호

  • 멘탈조각
    1k
    2021-11-21 19:14:33

    이쪽 업계에서 암호화라고 함은, 다시 평문으로 만들 수 있는 것(복호화)만 해당합니다.

    비밀번호를 암호화하자고 결정한 당사자는 운이 안좋아 서버가 털린 경우 형사피고인이 됩니다.

    DB내부의 원문을 알 수 있게 되기 때문이죠,

    제가 개발할때의 비밀번호 전송/저장 원칙은 다음과 같습니다.

    1. (localhost를 제외하면)TLS 세션으로만 전송

    2. 최소한 SHA512 이상의 비트수를 가진 해시로 해싱

    3. 최소한 5자리 이상의 SALT

    4. 해시된 비밀번호는 DB와 Account 서버간의 통신에서만 전송.

    5. 비밀번호 원문은 언어에서 지원하는 한 빠르게 메모리에서 퍼지.

  • koownij
    54
    2021-11-21 19:40:00 작성 2021-11-21 19:41:57 수정됨

     


    답변 감사합니다!! 

    프론트와 백엔드에서 전달하는 데이터는 SSL로 보호만 하고 데이터의 경우 암호화하지 않은 Plain text로 전송하면 되나요?









  • koownij
    54
    2021-11-21 19:41:40 작성 2021-11-21 19:42:18 수정됨

    멘탈조각

    구체적인 답변 감사합니다!!

    nodejs에서 bcrypt 쓰면 충분하겠죠..?


  • 로그인을 하시면 답변을 등록할 수 있습니다.