2016-06-23 6 views
0

큰 문제가 발생했습니다. 문제는 다음과 같습니다. C# 프로젝트를 컴파일 할 때 MySQL 서버에 연결하는 함수가 포함되어 있습니다. ILSpy로 프로젝트를 디 컴파일 할 때 연결 문자열이 표시됩니다.디 컴파일 할 때 정보를 표시하지 않고 C#을 MySQL에 안전하게 연결하는 방법

내 기능이

void ConnectToDatabase() 
{ 
    string myConnectionString; 
    myConnectionString = "Server=sql7.freemysqlhosting.net;UID==**********;Pwd==**********;Database=**********;"; 

    try 
    { 
     conn = new MySql.Data.MySqlClient.MySqlConnection(myConnectionString); 
     secondconn = new MySql.Data.MySqlClient.MySqlConnection(myConnectionString); 
     secondconn.Open(); 
     secondconn.ChangeDatabase("information_schema"); 

     conn.Open(); 
     ConnectionEstablished(true); 
    } 

같이 간다하지만이 문제 enter image description here

어떤 일이 주변에 있습니까? MySQL에 대한 점검을 위해 트로프 서버 측 연결을 수행 한 경우에도 내 정보를 뱉어 내지 않고 어떻게 연결할 수 있습니까?

감사합니다.

+3

는'config' 파일에 넣고 그런 다음 – Izzy

+1

을 암호화하십시오. 디 컴파일 만하면 암호화 키를 직접 볼 수 있으므로 같은 문제가 발생하지 않으시겠습니까? 너 자신을 비방해라. – Shame123

+1

자격 증명 정보를 넣는 위치에 관계없이 decompilers를 사용하여 추출 할 수 있으므로 디 컴파일을 방지하기 위해 난독 화를 사용하는 것이 좋습니다. 무료 또는 유료 도구를 사용하여 난독 화를 수행하십시오. 예 Eazfuscator.Net. 요구 사항에 따라 더 많은 도구를 검색하십시오. – Munawar

답변

2

웹 서비스를 사용하여 프로그램 시작시 신뢰할 수있는 시스템에 구성 파일이나 연결 문자열을 제공 할 수 있습니다. 그런 다음 사용자에게 웹 서비스에 대한 사용자 자격 증명을 묻거나 인증서를 사용할 수 있습니다. 이렇게하면 실제 데이터베이스 암호가 사용자 컴퓨터에 "저장"되지 않고 기계/사용자/인증서를 중앙에서 차단할 수 있습니다. 일반적인 웹 서비스 보안 조치가 적용됩니다 (HTTPS 사용, 강력한 암호화 사용, 자체 압류 암호화 사용 안함, 세션 사용 등)

+0

그래서 기본적으로 HTTP 연결을 설정해야합니다 "php"서버, 메서드 또는 게시물을 보내고 사용자 exsists 경우 보자, 그리고 만약 그렇다면, 데이터베이스 정보를 보냈지? – Shame123

+1

이미 C#을 사용하고 있다면 WCF를 사용하는 것이 좋습니다. 기본적인 웹 서비스는 매우 쉽습니다. Linux/Unix Server 만 있으면 [모노] (http : //www.mono- project.com/docs/web/wcf/). 기본 HTTP 클라이언트도 작동합니다. 하지만 그것이 인증서를 지원하는 buildin 경우 (나는 인증서 해지 같은 것을 의미합니다) 모르겠어요. 시작시 사용자 자격 증명을 사용하도록 제안하는 기본 http입니다. 사용자 자격 증명을 백 엔드에 보내고 유효성 검사를 통과 한 다음 다시 연결 문자열을 보냅니다. 제한된 시간에만 유효한 임시적인 것이 이상적입니다. – ivo

+1

[SecureString] (https://msdn.microsoft.com/en-us/library/system.security.securestring. aspx # HowSecure)는이 문제의 적어도 일부를 완화하는 데 도움이됩니다. – ivo

0

일반 사용자/일반 사용자는 100 % 완벽하게 보호 할 수 없습니다. 암호화, 난독 화 충분해야합니다.

고객 로컬 시스템에 배포해야하는 응용 프로그램은 최종 사용자에게 표시되지 않아야하는 모든 것을 보호하기 위해 난독 화되어야합니다.

암호화는 로컬 시스템에 정보를 저장하는 데 사용할 수 있지만 암호화/암호 해독을 수행하는 코드는 코드 난독 화를 사용하여 디 컴파일 형식으로 보호해야합니다.

클라이언트 응용 프로그램 (winform)이므로 클라이언트 컴퓨터에 연결 정보가 필요합니다. 도구를 사용하여 난독 화를 사용하는 것이 좋습니다. 가능한 도움

그것의 일반적인 문제

하고 있습니다 많은 : List of obfuscation tools for .Net

많은 유사한 질문에 이미 답됩니다

How can I protect my .NET assemblies from decompilation?

Protect .NET code from reverse engineering?