2

AppDomains とセキュリティ ポリシーを理解しようとしていますが、問題があります。

Mono が許可に従っていないようです。AppDomain をサンドボックス化しようとしています。

.NET を使用すると、期待どおりに動作します。権限がまったく設定されていないため、セキュリティ権限エラーが発生します。

Mono では、これは行われません。Mono-2.6 と Mono-2.10.8 の両方を試しましたが、mono はエラーなしでプログラムを実行します。

.NET と mono の両方に使用する C# コード:

namespace AppDomainTest
{
    class Program
    {
        private static AppDomain _domain;
        static void Main(string[] args)
        {
            AppDomainSetup info = new AppDomainSetup
            {
                ApplicationName = "AppDomainTest",
                ApplicationBase = Environment.CurrentDirectory,
            };


            PermissionSet permSet = new PermissionSet(PermissionState.None);
            //permSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
            // permSet.AddPermission(new FileIOPermission(PermissionState.Unrestricted));


            _domain = AppDomain.CreateDomain("TestDomain", null, info, permSet);

            TestObj o = (TestObj)_domain.CreateInstanceAndUnwrap(typeof(TestObj).Assembly.FullName, "AppDomainTest.TestObj");

            Console.WriteLine(o.GetDomainName());

        }
    }


    public class TestObj : MarshalByRefObject
    {
        public string GetDomainName()
        {
            return AppDomain.CurrentDomain.FriendlyName;
        }
    }
}

私がここでやっていることに本質的に何か問題がありますか?

4

1 に答える 1

2

Mono はコード アクセス セキュリティを完全には実装していません。

http://www.mono-project.com/Todo

http://tirania.org/blog/archive/2012/Apr-04.html

したがって、この点で .NET のように機能するとは思わないでください。

于 2012-04-24T04:34:28.033 に答える