问题标签 [code-access-security]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 跨类调用扩展方法需要 ControlEvidence 权限
我一直在努力理解代码访问安全性,我希望有人能够向我解释这种行为以及为什么它需要添加权限。假设我有两种扩展方法
如果这两个方法出现在同一个类中,它们不需要特殊的 CAS 权限。但是,一旦我将 dob 移到另一个类中,我就需要带有 ControlEvidence 标志的 System.Security.Permissions.SecurityPermission。从类之间的扩展方法中调用扩展方法是否有一些限制?除了将所有扩展合并到一个巨大的单个类中之外,还有其他解决方法吗?
'''编辑:''' 事实证明,实际问题与扩展方法无关。有一个构造函数在其中一个类中使用了 RegEx。正则表达式以及在运行时编译的其他函数需要 ControlEvidence。感谢您的帮助,这个 CAS 的东西非常棘手。
security - 代码访问安全将如何在 .NET Framework 4 下工作?
我听说代码访问安全性在 .NET Framework 4 下发生了彻底的变化。任何人都可以确认它现在将如何工作,以及对遗留应用程序的影响是什么?
code-access-security - 将许可证密钥添加到 zip 文件
我有一个以 zip 文件形式发布的产品。我想为其添加一些安全性,或者可能是密码或许可证密钥,以阻止未经授权的文件交易。有小费吗?
c# - SharePoint 代码访问安全性要求调用 Page.TemplateControl.ParseControl
调用此处引用的方法 Page.TemplateControl.ParseControl 的 CAS 策略要求是什么? http://msdn.microsoft.com/en-us/library/kz3ffe28(loband).aspx
具体来说,在 SharePoint 中,我尝试在最小信任环境中调用该方法,但在页面上出现此错误:
请求“System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限失败。
但是,在中等信任环境中,没有问题。
谢谢!
.net - 限制对 .NET 中 DLL 的访问
我为一家公司编写内部软件。
我总是想尽可能地利用 OOP 技术。在这种想法中,我想创建一个独立于其自身的数据访问层 (DAL) .DLL
。
我可以做些什么来限制 DALDLL
仅访问我的业务逻辑层DLL
?
我需要的最后一件事是公司中具有一点编程知识并且可以访问系统(通过 Active Directory)来安装 .NET Express、引用我的 .NET.DLL
并开始在真实系统之外触发数据访问代码的人。是否有任何 .NET 机制可以用来限制 aDLL
只能由预先选择的主机应用程序/DLL 使用?
c# - 代码访问安全问题 - 这里有什么问题?
背景
我有一个构建后事件,我用它来生成一些包含我们应用程序当前版本号的批处理文件。该事件调用一个批处理文件,该文件调用一个托管应用程序,该应用程序加载程序集并使用反射来查找其版本信息。
问题
当构建后事件在本地运行时,一切都很好。当它在我们的自动构建过程下运行时,我在日志中看到以下错误。我对代码访问安全一无所知,希望有人能迅速指出问题所在。
.net - 在由部分信任程序集调用的受信任程序集中授予 FullTrust
想象以下环境:在部分信任模式下运行的XBAP应用程序(默认行为;要求完全信任不是一个选项 - 但在您询问之前,如果 XBAP 完全信任,一切都按预期工作)正在引用本地安装的程序集,位于 GAC 中。为此,我们AllowPartiallyTrustedCallers
为本地程序集启用“”选项,并授予完全信任。(想象这是某种本地连接对应物)
(顺便说一下,我们知道使用 AllowPartiallyTrustedCallers 属性的安全方面,但这超出了本文的范围,只是不关心)
现在,即使我们的本地 GAC 程序集完全信任(我们可以通过Assembly.GetExecutingAssembly().IsFullyTrusted
随时调用来检查),它也会失败任何请求(隐式或显式),因为它是由部分信任的调用者(我们的 XBAP)调用的。(如果我误解了什么,请纠正我)。幸运的是,我们可以通过显式断言来获得本地 GAC 程序集内的权限,例如:
这样,我们就可以在此时阻止对需求的完整堆栈遍历,并根据需要进行任何文件访问。(再次,请纠正我......) 这实际上非常有效!(在这种情况下)
问题是,我们只是不做任何文件 IO,实际上我们正在调用外部库,它们应该能够做他们想做的任何事情(他们可能会做很多事情,访问注册表,发出 Web 服务请求,写文件,调用非托管代码 - 细节我们不知道,但我们可以信任它们),并防止需求堆栈遍历到达我们部分信任的调用者。我们应该能够实现这一点,因为一切都是通过我们本地安装和受信任的 GAC 程序集完成的。(再次,请不要在这里关心安全方面,假设我们可以信任客户端)
解决这个问题的方法:
我们首先想到的是,在使用外部库之前,为几乎所有权限声明一组权限 (PermissionSet)。这几乎可以工作,但看起来在某些时候仍然会发生安全异常——要么是因为外部库可能会启动更多由于某种原因而失败的线程,要么是因为它访问了入口程序集——事实上,我们不知道。
二、我们尝试了以下属性
它也没有用。
第三,我们考虑打开一个新的 AppDomain,使完全受信任的 GAC 程序集成为 AppDomains 入口点,并在此 appdomain 内运行任何东西——任何堆栈遍历都无法再到达部分受信任的调用者——在我们的理论中)。不幸的是,我们无法实现这一点……或者新创建的 AppDomain 未能满足更多要求,即使设置为在“MyComputer”安全区域证据或不受限制的 SecurityPermission 下运行。我无法明确授予对整个 AppDomain 的完全信任。
第四,不能选择使用caspol。(由于部署原因)
现在,由于这应该是很多信息,我希望您了解我们要存档的内容。
为了明确这一点:完全受信任的程序集如何对其调用的程序集断言完全信任,停止所有堆栈遍历以到达部分受信任的调用者?
提前谢谢了
c# - 使用证据、安全策略和权限来防止程序集加载到 Web 服务器上
假设有一个.NET 类库代码,例如,写入 Windows 注册表。然后这段代码在互联网上运行有问题,因为默认的互联网策略不允许写入注册表。
通过在程序集中添加一条RequestMinimum
语句,我们可以指定代码需要写入权限才能写入注册表。这不会改变代码没有权限的事实,但会阻止程序集加载;运行时将抛出一个System.Security.Policy.PolicyException
并识别所需的权限。
您现在是否还有其他使用证据、安全策略和权限(代码访问安全性的关键元素)来防止程序集加载到 Web 服务器上的示例?
.net - 如何将新的二进制文件复制到 C:\Program Files?
我正在创建一个自动更新自身的 Windows 应用程序。出于各种原因,我没有使用 ClickOnce。当我尝试 File.Move() 我更新的文件到 Windows 7 上的 C:\Program Files 时,我收到以下错误:
拒绝访问路径“C:\Program Files\<company>\<app>\<app.exe>”。
我没有收到 UAC 提示。我尝试更新的 exe 当前未运行。
c# - 如何判断库代码中是否允许代码访问安全性
在 .NET 4 中,代码访问安全 (CAS) 已被弃用。每当您调用隐式使用它的方法时,它都会失败并显示NotSupportedException
,这可以通过配置开关解决,使其回退到旧行为。
我们有一个在 .NET 3.5 和 .NET 4 中都使用的通用库,因此我们需要能够判断是否应该使用 CAS 方法。
例如,在 .NET 3.5 中,我应该调用:
而在 .NET 4 中我想调用
调用Load(string, Evidence)
抛出一个NotSupportedException
.
当然这可行,但我想知道是否有更好的方法: