2012-03-27 2 views
0

이론적으로 질문 :C# 소스 코드에서 중요한 데이터를 보호 하시겠습니까?

인터넷에있는 외부 mySQL 서버로 제출 된 사용자 데이터를 다시 보내는 C# Windows Form 앱이 있습니다. 사람들이 mySQL 서버의 사용자 이름과 암호를 보지 못하게하려면 어떻게해야합니까? (예 : C# exe 프로그램을 디 컴파일하여).

안부

+2

소스 코드에 보관하지 않습니까? – Tudor

+0

난독 화는 해결책이 될 수 있습니다.하지만 오히려 이런 종류의 일에 웹 서비스를 사용할 것입니다 ... – gbianchi

+0

누군가가 클라이언트 인증서를 훔칠 때까지 OpenID –

답변

3

짧은 답변 : 당신은 할 수 - 당신은 제어하지 않는 컴퓨터에서 실행 아무것도 등을 디 컴파일 할 수

가능한 옵션 :

당신은 접근을 시도 할 수 있습니다 client-cert (SSL 표준의 일부)를 통해 클라이언트를 인증 한 서버쪽에 SSL 보안 웹 서비스가 있습니다. 해당 웹 서비스는 클라이언트를 대신하여 DB에 액세스합니다. 당신은 webservice와 DB 사이의 연결을 네트워크로 보호 할 수 있습니다. ...

+0

과 같은 타사 인증 공급자를 사용하십시오. –

+0

@boo 해결할 수있는 문제는 다음과 같습니다. 클라이언트 인증서를 무효화하고 새 인증서를 발급 할 수 있습니다 ... 사용자마다 다른 클라이언트 인증서를 사용할 수도 있습니다. 하나 (다른 모든 사람들은 무효화 된 것을 알지 못하고 일할 수 있습니다). – Yahia

+0

어느 시점에서 유지 보수 측면에서 사용자 별 암호를 발급하는 것보다 나을 것이 아니라 암호 관리 시스템을 개발하는 것보다 인증서 관리 시스템을 개발하는 것이 더 비쌉니다. –

1

일반적으로 사용자에게 자격 증명을 묻는 메시지가 나타나거나 계정이 공용 인 경우 (예 : 자격 증명이 안전하지 않은 경우) 계정에서 허용되는 항목을 제한하십시오.

1

사용자가 제출 한 데이터를 실제 데이터베이스 서버와 통신하는 다른 서비스로 전달합니다. 그렇게하면 클라이언트와의 연결 세부 사항을 유지할 수 있습니다.

할 수 없다면 클라이언트 코드에서 사용하는 mySQL 데이터베이스에 대한 제한된 계정을 만들어야합니다.

0

클라이언트 소프트웨어가 알고있는 모든 것이 사용자에게 알려졌다는 사실을 알고 살아야합니다.

클라이언트 소프트웨어가 사용할 수있는 가장 작은 인터페이스를 설정하십시오. 전체 DB 계정을 노출하는 대신 일부 저장 프로 시저에만 제한된 계정을 사용하십시오. 또는 DB에 직접 액세스하지 말고 (웹) 서비스를 통해 액세스하십시오. 그런 다음 서비스가 실행 안전 메소드 만 노출하는지 확인하십시오.

관련 문제