c# - 接受匿名方法(Action<>、Func<>)作为参数有哪些安全隐患?

标签 c# .net security action func

正如标题所说:在 C# 中使用和/或传递匿名方法(Action<>Func<>)时需要考虑的安全隐患是什么?

接受 Action<> 的方法/Func<>似乎是将外部代码注入(inject)程序的潜在方式。作为记录,我知道注入(inject)的方法或函数不能在任意内存访问的意义上做本质上不安全的事情,但我认为它可以允许调用代码调用例如任意 .Net 框架函数、损坏数据或以其他方式导致应用程序行为异常。

这个假设是错误的吗?

如果不是,应该如何锁定它们?此外,有什么方法可以验证 /Func<>传递给方法或函数以确保它具有预期形式或限制其对某些类型和命名空间的访问?

此外,如果我使用的术语不太正确,请原谅我,我还在学习。

最佳答案

A method which accepts Action<>/Func<> seems to be a potential way for foreign code to be injected into a program

那是完全错误的。根据定义,无论谁调用您的函数并传递委托(delegate),都已经在您的程序中运行代码。
任何传递委托(delegate)的代码都可以为所欲为。在同一个 AppDomain 中不能有安全边界。 (旧版本的 .Net 具有代码访问安全性,它试图这样做,但不是一个好主意)

但是,它会产生意外的重入,这会导致线程安全代码出现问题。

关于c# - 接受匿名方法(Action<>、Func<>)作为参数有哪些安全隐患?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27768183/

相关文章:

c# - 连接已重置 ASP.NET

java - java中如何设置软件的过期日期?

.net - .NET PInvoke 能否从用户指定的目录动态加载 native dll?

c# - 向聊天客户端添加安全性

security - 限制对 Jenkins Web 仪表板的访问

c# - 何时使用 TaskCreationOptions.LongRunning?

c# - 精确值匹配索引

c# - 在本地访问 Azure Key Vault 'secrets' 以获取环境变量 - C#

c# - 如何使用 EF5 包含从一种数据库类型到另一种实体类型的转换?

c# - 继承 .net 类