프로그래밍 언어/Database

데이터베이스에 암호를 저장하는 가장 좋은 방법

Rateye 2021. 6. 22. 10:45
728x90
반응형
질문 : 데이터베이스에 암호를 저장하는 가장 좋은 방법

인증 (사용자 이름 및 비밀번호)이 필요한 프로젝트를 진행 중입니다.

또한 데이터베이스에 연결되므로 사용자 이름과 비밀번호를 거기에 저장할 것이라고 생각했습니다. 그러나 데이터베이스에있는 테이블의 텍스트 필드처럼 암호를 갖는 것은 좋은 생각이 아닌 것 같습니다.

C #을 사용하고 있으며 2008 Express 서버에 연결하고 있습니다. 누구든지 이러한 유형의 데이터를 저장하는 가장 좋은 방법이 무엇인지 (가능한 한 많은 예제와 함께) 제안 할 수 있습니까?

추신 : 좋은 이유를 제공 할 수 있다면이 정보가 데이터베이스에 저장되지 않는다는 생각에 열려 있습니다.

답변

일반 텍스트 필드에 암호를 저장하는 것은 끔찍한 생각이라는 것이 맞습니다. 그러나 위치에 관한 한 , 직면하게 될 대부분의 경우 (솔직히 반례를 생각할 수 없습니다) 데이터베이스에 암호 표현 을 저장하는 것이 적절한 일입니다. 표현함으로써 당신이 해시 (모든 사용자 달라야) 소금 안전한 단방향 알고리즘과, 원래 암호를 버리는 것을 저장소를 사용하여 암호를 원하는 것을 의미한다. 그런 다음 암호를 확인하려면 값을 해시하고 (동일한 해싱 알고리즘 및 솔트 사용) 데이터베이스의 해시 된 값과 비교합니다.

그래서, 당신이 이것에 대해 생각하고있는 것이 좋은 것이고 좋은 질문이지만, 이것은 실제로이 질문들의 중복입니다 (적어도) :

솔팅 비트에 대해 좀 더 명확히하기 위해 단순히 암호를 해싱하고 저장하는 데 따른 위험은 침입자가 데이터베이스 를 확보하더라도 레인보우 테이블 을 사용하여 "복호화"할 수 있다는 것입니다. 암호 (적어도 무지개 테이블에 표시되는 암호). 이 문제를 해결하기 위해 개발자는 암호에 솔트 를 추가하여 제대로 수행되면 레인보우 공격을 수행 할 수 없게 만듭니다. 일반적인 오해는 단순히 모든 암호에 동일한 고유하고 긴 문자열을 추가하는 것입니다. 이것은 끔찍한 것은 아니지만 모든 비밀번호에 고유 한 솔트를 추가하는 것이 가장 좋습니다. 자세한 내용은 이것을 읽으십시오.

출처 : https://stackoverflow.com/questions/1054022/best-way-to-store-password-in-database
728x90
반응형