2013-04-12 2 views
5

입력을 읽기 위해 데이터베이스에 액세스해야하는 C++ 프로젝트에서 작업하고 있습니다.구성 파일에서 데이터베이스 암호를 숨기는 방법

지금까지는 XML 기반 구성 파일에 다른 많은 설정과 함께 기본 사용자 이름 (postgres)과 '고정 된 일반 텍스트'비밀번호가 저장되었습니다.

이제 필요한 것은 구성 파일을 제공 할 때 사용자로부터 암호를 숨기는 것입니다.

FYI : 개발 영역은 Linux이고 database는 postgresql입니다. 우리는 데이터베이스에 연결하고 암호를 몰라도 그것을 사용하는 사용자에게 설정 파일을주고 싶습니다

당신은 빠르고 쉽게 참조 할 수 있도록 제안 만약 내가 주셔서 감사합니다.

(작은 독서 자료도 좋을 것입니다)

고마워요

+2

데이터베이스가 SQL Server 인 경우 Windows 인증을 사용하므로 암호를 저장할 필요가 없습니다. –

+0

@brianbeuning 개발 영역은 리눅스이고 database는 postgresql입니다. 우리는 데이터베이스에 연결하고 암호를 모른 채 사용할 수있는 구성 파일을 사용자에게 제공하려고합니다. – rahman

+2

유일하게 안전한 해결책은 프로그램을 시작할 때마다 사용자가 암호를 입력하도록하는 것입니다. 암호를 암호화하면 프로그램의 키를 어딘가에 숨겨야합니다. 키를 찾을 수는 있지만 비밀번호를 얻는 데 필요한 노력은 계속됩니다. –

답변

6

의도가없는 사용자가 어떤 형태로든이 프로그램을 포함하고있는 경우이 암호를 얻지 못하게 할 수 없습니다.

그러나 두 가지 가능한 해결책이 있습니다 :

  1. 데이터베이스에 대한 읽기 전용 액세스 할 수있는 프로그램과 함께 제공되는 사용자 및 암호는;

  2. 프로그램이 데이터베이스에 직접 연결되지 않습니다. 사용자에게 암호를 제공 할 필요없이 실제 데이터베이스에서이 데이터를 가져올 수있는 서버 응용 프로그램에 데이터를 요청하지만이 사용자가 자신이 의도 한 데이터에만 액세스하고 있는지 확인하기 위해 적절한 보안 검사를 수행 할 수도 있습니다.

+0

첫 번째 솔루션을 통해 사용자가 원하는 데이터베이스를 볼 수 있습니다. 두 번째 해결책은 나에게 완벽하지만 '너무'좋아 보인다. 서버 등이 필요없는 훨씬 간단한 솔루션이 필요합니다. – rahman

+0

아마도 일부 테이블에만 액세스 권한을 부여합니까? 그것은 당신의 특정한 문제에 많은 영향을 미칠 것입니다. 어떤 경우에도 며칠 씩 프로젝트가 지연 되더라도 두 번째 솔루션을 고려해야합니다. – Havenard

+1

제안을 원하면 PHP를 사용하여 이와 같이 빠르게 구현할 수 있습니다. 프로그램은 필요한 매개 변수를 사용하여 PHP 스크립트에 HTTP 요청을하고 PHP는 요청 된 데이터를 XML 또는 JSON 형식으로 반환합니다. 귀하의 프로그램은 그것을 분석하고 트릭이 완료됩니다. – Havenard

-5

우리는 MD5를 사용하여 구성 파일에서 암호를 암호화합니다.

+2

MD5는 단방향 해시 알고리즘입니다. 암호를 해싱하면 응용 프로그램을 포함한 모든 항목을 읽을 수 없게됩니다. 그리고 MD5는 일반적으로 보안과 관련된 모든 것에 적합하지 않은 것으로 간주됩니다. –

4

구성 파일의 암호를 암호화하는 데 사용되는 다른 "하드 코드 된"암호가있을 수 있습니다. 따라서 암호화 된 데이터베이스 암호 (db_password)를 구성 파일에 기록한 다음 데이터베이스에 액세스해야 할 때 하드 코드 된 암호로 db_password의 암호를 해독합니다. 물론 암호 해독기를 사용하여 암호를 복구 할 수는 있지만 쉬운 일은 아닙니다.

+0

실제로 생각보다 쉽습니다. Wireshark와 같은 간단한 네트워크 디버깅 프로그램은 응용 프로그램이 데이터베이스에 연결할 때 네트워크 트래픽에서이 암호를 포착 할 수 있습니다. 전 세계에서 가장 정교한 암호화를 사용하여 XML 파일에서이 비밀번호를 보호 할 수 있습니다. – Havenard

+0

@Havenard 나는 또한 당신의 대답을 읽었습니다. 나는 두 번째 해결책을 찾아 내려고 노력하고있다. 그러나 과대 평가하지 않는 한 1-2 일 만에 쉽고 쉬울 수 없다. – rahman

+0

FreeNickname 솔루션은 쉽습니다 (단절 가능).일시적으로 내 요구 사항에 여전히 대답 할 수 있습니다. 나는 그것을 시도 할 것이다. 그러나 나는 C++에서 쉬운 암호화/암호 해독을위한 참조가 필요하다. 그걸 도와 줄 수있어? – rahman

관련 문제