.Net security noob here ... 다른 사람이 내 어셈블리를로드하지 못하게하는 가장 간단한 방법은 무엇입니까?누군가가 내 관리되는 어셈블리를로드하지 못하도록하는 가장 간단한 방법은 무엇입니까?
배경 : 실제로 충분한 '보호'(충분한 시간/돈/현물로 누군가가 성공적으로 해킹하고 해킹 할 수 있음)를 찾고 있지만 이것이 이미 해결 된 문제인 것처럼 보입니다. 방금 그것을 놓쳤습니다. 강력한 이름은 보안 계층을 사용할 수 있습니다
하지만, 반드시 의도 (경고 참조 this microsoft documentation에 따라하지 않았다 : 여기
내가 알고 내가 (생각) 무엇을합니까 하지 보안을 위해 강력한 이름에 의존하고있다. 그들은 단지 고유 ID를 제공합니다.) 내가 부하 타사 어셈블리 (Aspose 내가 그것을 생각) 때문에 할 수 없습니다 어디 상황이 발생했을 그^노트에그들은 그들의 집회에 서명하지 않았다. 그러나 모든 것은 내 것이 었습니다. 그래서 나는 ildasm 그들의 집회에 우리 자신의 콧수염으로 서명하고, 다시 ilasm으로) 에서 주문했다. 따라서 강력한 이름 지정은 나에게 좋은 보안 메커니즘 인 처럼 보이지 않습니다.HOWEVER ... 코드가 인 간단한 확인은 호출 어셈블리가 내 공개 키 토큰으로 서명되어 있는지 확인하려면 어떻게해야합니까? 이 효과가 충분합니까?
강력한 명명 내가 dll을 더 나은 경로 (wintrust.dll을이와 을 도울 수있는 것 같다)에 인증 코드 디지털 서명 확인 을 구현하고, 달성 에 노력하고있어 사용하지 않아야하는 경우?
나는 난독 화를 위해 여러 공급 업체의 툴링 을 사용하고 있으며 많은 사람들이 라이센스와 모든 종류의 것들을 제공합니다. 나는 가능성이 은 문자열과 코드 암호화로 기능을 사용하지 않고, 그러나 난 아직도 내 민감한 라이브러리를로드하지 사람을 방지하기위한 메커니즘을하고 싶은 몇 가지 민감한 부품을 숨길 난독의 약간을 사용합니다 , 종종 성능 (및 기타) 비용이 부과됩니다.
그래서 다시 질문에
, 내 어셈블리를로드에서 사람을 방지하기 위해 간단한 방법은 무엇입니까?
투표 마감을위한 투표가 있었습니까? 그렇다면 왜? 어쩌면 이것이 대답 된 곳으로 나를 가리킬 수 있습니다. 가능한 뭔가를 이미 놓쳤습니다. 또는 실제로 이것이 실제로 효과적으로 응답되지 않았 음을 나타낼 수도 있습니다. – JohnZaj
"로드 금지"란 정확히 무엇을 의미합니까? 일반적인 경우 어셈블리가 다른 어떤 것과 마찬가지로 불투명 한 파일이기 때문에 불가능합니다. 가능하면 어셈블리 내의 .NET 코드가 실행되지 못하게하거나 내부의 항목을 숨길 수 있습니다. 추신 : 당신이 알았 듯이, 강력한 명명은 식별에 관한 것입니다. 어셈블리를 사직 할 때 더 이상 같은 게시자가 아닙니다. 해당 어셈블리에 게시자를 확인하는 코드가 포함되어있는 경우 내부의 코드가 해당 코드를 사용하여 액션 과정을 변경할 수 있지만 여전히 어셈블리를로드 할 수 있습니다. –
당신은 당신을 멈추려 고합니다 .Net dll은 COM으로 읽을 수 있습니까? – TechLiam