他のユーザーがサーバーに自由にアップロードできるプラグイン タイプのコンポーネントをロードするこの小さなアプリがあります。しかし、ユーザーが他のユーザーのファイルにアクセスできるようにしたくありません。各プラグイン コンポーネントのアクセスを制限付きアクセスに設定する必要があります。
プラグイン クラスの基本クラス内でアクセスを設定しようとしましたが、ロードされたプラグイン クラスは完全なファイル アクセスを持っているようです。
誰がページをロードするかによってパスが変わるため、属性でパーミッションを設定できません。
コード スニペストを次に示します。
public abstract class PluginBase<T>
{
public PluginBase
{
PermissionSet ps = new PermissionSet(System.Security.Permissions.PermissionState.None);
ps.AddPermission(new System.Security.Permissions.FileIOPermission(System.Security.Permissions.FileIOPermissionAccess.PathDiscovery | System.Security.Permissions.FileIOPermissionAccess.Read, HttpContext.Current.Server.MapPath("/app_data/www_somesite_com")));
ps.PermitOnly();
}
}
public class SomePlugin : PluginBase<SomePlugin>
{
public SomePlugin
{
File.WriteAllText("c:\test.txt", "This should not be possible, but it is.. why?");
}
}
よろしくお願いします!