2010-06-26 2 views
1

최근에 친구를위한 작은 앱을 만든 다음 공개 앱으로 만들었습니다. 그래서 내 MS SQL DB에 연결하고 값을 확인하는 것을 잊었습니다. 누군가가 Red Gate .Net Reflector를 사용하여 암호를 가져 와서 모두 파괴했습니다. 나는 그들의 ISP에 연락했는데 그것들을 조사하고있다. 분명히이 사람은 그들과 정적 IP를 가지고있다.VB.Net 데이터베이스에 대한 보안 암호?

그래서 나에게는 값진 가격으로 교훈을 얻었습니다. 어떻게 이런 일이 다시 일어나지 않도록 할 수 있습니까? 그들이 사용할 수있는 안전하지 않은 연결 문자열에서 벗어날 수있는 방법은 무엇입니까?

답변

2

절대 하드 코드 연결 문자열. 제공된 구성 섹션 (connectionStrings)을 사용하고 실제로 편집증 인 경우 encrypt it을 사용하십시오.

공유 데이터베이스를 사용하는 경우에도 클라이언트에 연결 문자열이 없어야하지만 대신에 데이터베이스에 연결할 서비스 지점 (예 : 웹 서비스)을 만들어야합니다. 클라이언트가이 서버에 연결할 수 있으며 연결 문자열은 사용자의 제어 및 서버에있는 서비스 뒤에 안전합니다.

+0

왜 downvote? – Oded

2

데이터베이스 연결을 노출시키지 말고 응용 프로그램이 필요로하는 것을 수행하기 위해 메소드와 권한 만 가진 웹 서비스 또는 유사하게 통신하도록하십시오.

데이터베이스 연결이 절대적으로 필요한 경우 사용자에게 데이터베이스에 대한 읽기 권한 만 있는지 확인하십시오.

연결 문자열을 암호화하는 것은 시작이지만 프로그램에서 유용하게 사용하려면 암호 해독 방법을 알아야합니다. 프로그램에서 암호를 해독 할 수 있다면 침입자는 공격자가 할 수있는 일의 양에만 영향을 줄 수 있습니다.

따라서 제 생각에는 읽기 전용 서비스를 제공해야합니다.

2

공개 앱인 경우 각 사용자에 대해 개별 로그인을 제공하거나 데이터베이스와 사용자를 인증하고 데이터베이스와 대화하는 응용 프로그램 사이에 프록시를 두어야합니다.

연결 문자열을 암호화해도 많은 도움이되지 않을 것입니다. 내장 도구 또는 Crack.net을 사용하여 쉽게 해독 할 수 있다고 생각합니다.

1

편집증에 빠지면 응용 프로그램이 시작될 때마다 (관리자 인터페이스 일 수도 있음) sysadmin에 암호를 묻습니다. 그런 식으로 메모리가 상주합니다.

나는이 질문을 아주 좋아합니다. driis처럼 암호화 된 연결 문자열을 사용하는 경우에도 암호화 된 연결 문자열의 암호를 해독하기 위해 암호 (또는 키 등)를 저장해야합니다. 똑같은 문제의 레이어가 더 많습니다.

1

구성에서 연결 문자열과 암호화 된 섹션을 사용하면이 유형의 공격이 중지되지 않고 설정 파일을 설치하지 않은 컴퓨터에서만 읽을 수 있습니다.

데이터베이스에 연결하여 데이터를 검색하는 웹 서비스를 만든 다음 웹 서비스 로그온에 필요한 최소 권한 만 있는지 확인하거나 웹 서비스의 사용자가 로그온하도록하십시오. 데이터베이스 연결을 위해 해당 사용자를 가장합니다.

당신은 데이터베이스에 직접 외부 연결을 차단하는 방화벽 보호 기능이 없으므로 인터넷에 노출 된 다른 위험한 포트가 무엇이 있을지 궁금합니다. ???

방화벽을 사용하여 서버에 대한 액세스를 http 및 https 프로토콜로 제한하면 공격의 성공 가능성이 줄어 듭니다.

관련 문제