문제

다음을 수행해야 하는 시스템에 대해 어떤 권장 사항을 제시할 수 있습니까?

플러그인을 로드하고 최종적으로 실행하지만 이러한 플러그인을 로드하는 방법에는 두 가지가 있습니다.

  • 공인 된 플러그인 만로드 (소프트웨어 소유자가 개발)
  • 모든 플러그인 로드

그리고 승인된 플러그인이 실제(수정되지 않은) 것인지 합리적으로 보안해야 합니다.그러나 모든 플러그인은 별도의 어셈블리에 있어야 합니다.나는 로더 애플리케이션에 공개 키가 저장된 플러그인에 대해 강력한 이름의 어셈블리를 사용하는 방법을 검토해 왔지만, 나에게는 이것이 로더 애플리케이션 내에서 공개 키를 수정하기가 너무 쉬운 것 같습니다(사용자가 그렇게 기울고 있는 경우). 로더 애플리케이션의 난독화.더 안전한 아이디어는 없나요?

도움이 되었습니까?

해결책

기본적으로 다른 사람의 컴퓨터에 코드를 넣는 경우 보안이 절대 보장되지 않습니다.

모든 종류의 보안 트릭을 볼 수 있지만 결국 코드는 해당 컴퓨터에 있으므로 제어할 수 없습니다.

최종 사용자가 승인되지 않은 플러그인을 로드하면 얼마를 잃을 수 있습니까?

다른 팁

최종 사용자가 승인되지 않은 플러그인을 로드하면 얼마를 잃을 수 있습니까?

물론 이런 일이 자주 발생하지는 않겠지만, 만약 그런 일이 발생한다면 우리는 많은 것을 잃게 됩니다. 비록 우리가 100% 안전한 아무것도 생산하지 못할 것이라는 것을 이해하지만 사람들이 그 일을 하는 것을 방해할 만큼 방해가 되도록 만들고 싶습니다.

완전한 강력한 이름을 사용하여 간단한 동적 로딩을 수행할 때 성가신 점은 플러그인이 서명되었음에도 불구하고 다른 어셈블리를 로드하기 위해 로더 앱 내에서 간단한 문자열 리터럴 변경만 하면 된다는 것입니다.

질문을 확장할 수 있습니다."내 .net 어셈블리를 리버스 엔지니어링으로부터 어떻게 보호할 수 있나요?"

대답은 - 당신은 할 수 없습니다입니다.아직 보지 못한 분들을 위해 "reflector"를 찾아보고 순진한 exe에서 실행해 보세요.

(그런데, 암호화/암호 해독 하드웨어를 함께 보내지 않는 한, 이는 항상 사용자의 손에 없는 코드에 대한 답입니다.)

난독화는 리버스 엔지니어링을 개발보다 더 어렵게(더 많은 비용이 들도록) 시도하며 일부 유형의 알고리즘에서는 성공합니다.

어셈블리에 서명하십시오.

강력한 이름의 서명 또는 강한 이름 지정은 소프트웨어 구성 요소에 다른 사람이 스푸핑 할 수없는 전 세계적으로 고유 한 정체성을 제공합니다.강력한 이름은 구성 요소 종속성 및 구성 문이 올바른 구성 요소 및 구성 요소 버전에 매핑되도록 보장하는 데 사용됩니다.

http://msdn.microsoft.com/en-us/library/h4fa028b(VS.80).aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top