只是回顾一下 Streams 和 Java 8 Lambda 功能,以及对其他不言自明的 Oracle 文档的最后评论拉姆达表达式 http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html states:
如果 lambda 表达式的目标类型及其
捕获的参数是可序列化的。然而,就像内部类一样,
强烈建议不要序列化 lambda 表达式。
检查这个我发现了SO问题
如何序列化 lambda? https://stackoverflow.com/questions/22807912/how-to-serialize-a-lambda
其中 OP 处理来自客户端代码的序列化 lambda 表达式。
如果我有一个 Web 服务,并且其中一个参数是 lambda 表达式,那么它似乎可能包含恶意代码,可以执行文件系统访问或导致堆栈溢出等操作 - 因此信任它是非常愚蠢的。
我是否过分夸大了安全风险,或者序列化表达式可以包含的内容是否有限制?
让我们这样说:Java 对象序列化(在某种程度上)无论如何都是一场安全噩梦(请参阅here https://stackoverflow.com/questions/11417103/serialization-how-to-secure-a-serialized-java-object例如 )。
换句话说:序列化其本身就是一个需要人们首先认真思考的话题。因此,无论您谈论序列化 lambda 还是任何其他类型的序列化对象,都并不重要。
因此,例如您想确保您理解并支持相应的规则,例如CERT https://www.securecoding.cert.org/confluence/pages/viewpage.action?pageId=27492407.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)