문제

html은 그 안에 내장 된 JavaScript의 작은 비트를 포함 할 수 있습니다 (예 : onclick 이벤트 처리기).

  1. C#과 같은 도트 넷 언어를 사용하여 HTML 브라우저를 작성하는 경우, 런타임까지 수신하지 않는 경우 (그리고 실행 가능이 아닌 문자열 데이터로 수신하지 않기 때문에 JavaScript 조각을 실행하는 데 사용할 수있는 기술 또는 API를 사용할 수있는 경우 암호)?

  2. 실행되는 코드가 JavaScript 대신 C# 스 니펫 인 경우 더 쉽고 어렵습니까?

  3. 내 코드가 특이한 특권이 필요하지 않은 기술이 있습니까? 예를 들어, 방법과 같은 방법 CodeCompiler.FromSource 필요합니다 SecurityPermissionFlag.UnmanagedCode (나에게 과도한 것 같다 : 코드를 컴파일하는 것이 왜 그렇게 위험한 지 모르겠다).

  4. 클라이언트 측 코드뿐만 아니라 서버 측 코드를 제어 한 경우 클라이언트 대신 서버에서 이러한 스크립트 조각을 컴파일 한 다음 실행될 클라이언트 측에 사전 컴파일 된 코드로 전송하는 것을 고려할 수도 있습니다. 네트워크를 통해 해당 코드 (DotNet 어셈블리)를 클라이언트로 보내는 방법이 있습니까? 클라이언트 측 코드가 네트워크에서 클라이언트 측 RAM으로 수신하고 클라이언트 측에서 호출하도록합니다. 없이 클라이언트 측 디스크 드라이브에 파일로 저장 하시겠습니까?


편집하다

나는 처음 세 가지 질문에 대한 답을 가지고 있습니다. 나는 컴파일이 높은 특권을 가져야한다는 사실에 사임했습니다. 나는 이유가 없다. 어쩌면 (이것은 매우 설득력있는 이유는 없지만) 컴파일러가 관리되지 않는 코드를 사용하여 구현되기 때문입니다. 어쩌면 이것은 "C# 버전 5"기간 동안 관리 된 코드를 사용하여 컴파일러를 다시 구현할 때 변경 될 수 있습니다. 어쨌든, 이유가 무엇이든, 그것은 그 방식 인 것처럼 보이며, 근로자가 없지만 (기타 유사한 API이지만 더 적은 권한이 필요한).

나머지 질문은 한 기계에서 다른 기계로 조립 인스턴스를 얻는 방법입니다. 시간이 있으면 신뢰할 수없는 코드가 실행될 수 있는지 알아볼 것입니다. Assembly.Load(byte[] rawAssembly) 방법.

도움이 되었습니까?

해결책

  1. 서버 측 JavaScript는 .NET 플랫폼에서 지원하는 언어 중 하나입니다. 작은 코드 스 니펫을 기존 코드에 삽입해야 할 때 Sceenrios에서 여러 번 사용했습니다. 런타임 IE 데이터베이스에서로드하고 컴파일 할 수 있으므로 사전 성형 페널티가 없습니다.

  2. 배관 작업을하는 관점에서 (소스 검색, 컴파일 등) 차이는 없습니다. 강력하게 타이핑 된 언어를 사용하면 코드 스 니펫을 편집 가능한 컴파일 장치로 조립하는 것이 훨씬 어렵습니다.

  3. 권한은 명확하게 도전입니다. 나는 당신이 언급 한 특정 허가에 대해서는 확신하지 못하지만 보안은 우려입니다. 컴파일하는 모든 소스는 무엇이든 될 수 있으며 코드 소스에주의를 기울이지 않으면 시스템의 백도어가 될 수 있습니다.

  4. 이것에 대한 대답은 물론 그렇습니다. 파일에서 반드시가 아니라 어디서나 어셈블리를로드 할 수 있습니다. 메모리에서도 컴파일 할 수도 있습니다. 이것이 제가하는 일입니다. 이 경우 DLL 파일이 없습니다.

다른 팁

당신은 몇 가지 질문을하고 있습니다. 그래서 나는 당신에게 그들 중 하나에 대한 아이디어를 줄 것입니다. 아주 좋은 기사와 일부 코드 샘플이 있습니다.http://www.west-wind.com/presentations/dynamiccode/dynamiccode.htm런타임에 C# 코드를 컴파일하고 실행하는 것에 대해 이야기합니다. 나는 그것이 매우 유용하다고 생각했고 표준 C# 응용 프로그램에서 이것을 사용하고 있습니다. 문제에 대해서도 사용할 수있는 것 같습니다.

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