c# – 接受匿名方法(Action <>,Func <>)作为参数有什么安全隐患?

c# – 接受匿名方法(Action <>,Func <>)作为参数有什么安全隐患?,第1张

概述正如标题所说:在C#中使用和/或传递匿名方法(Action<>,Func<>)时需要考虑的安全含义是什么? 接受Action<> / Func<>的方法似乎是将外部代码注入程序的潜在方式.为了记录,我理解注入的方法或函数不能在任意内存访问的意义上做本质上不安全的事情,但我认为它可以允许调用代码调用例如任意.Net框架功能,损坏数据或以其他方式导致应用程序行为异常. 这个假设是错的吗? 如果不是,应 正如标题所说:在C#中使用和/或传递匿名方法(Action<>,Func<>)时需要考虑的安全含义是什么?

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

这个假设是错的吗?

如果不是,应该怎么做才能锁定这些?另外,有没有办法验证
/ FUNC<>传递给方法或函数以确保它是预期的形式或限制其对某些类型和命名空间的访问?

另外,请原谅我,如果我没有使用正确的术语,我还在学习.

解决方法

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

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

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

总结

以上是内存溢出为你收集整理的c# – 接受匿名方法(Action <>,Func <>)作为参数有什么安全隐患?全部内容,希望文章能够帮你解决c# – 接受匿名方法(Action <>,Func <>)作为参数有什么安全隐患?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1249710.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存