Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 如何在Haskell中安全地编译和运行第三方代码段? userDefinedFunction=“\x->x*x::Int” main=do f Int 设结果=映射f[1,2,3,4] 打印$show结果_Security_Haskell_Eval - Fatal编程技术网

Security 如何在Haskell中安全地编译和运行第三方代码段? userDefinedFunction=“\x->x*x::Int” main=do f Int 设结果=映射f[1,2,3,4] 打印$show结果

Security 如何在Haskell中安全地编译和运行第三方代码段? userDefinedFunction=“\x->x*x::Int” main=do f Int 设结果=映射f[1,2,3,4] 打印$show结果,security,haskell,eval,Security,Haskell,Eval,如何做到安全userDefinedFunction应该是不受信任的第三方代码。它应该建立在快速,优化的代码,但不应该能够直接访问系统 我想它应该结合和。有没有关于这方面的项目或教程?有一个wiki页面,专门针对 您还可以查看lambdabots源代码。mueval的开发考虑了其中一些属性。遗憾的是,它可能在性能上有所欠缺。如果有一些llvm nacl绑定就太好了。如果没有性能要求,可以使用Lua之类的东西。我想要用户贡献的数学密集型代码。@Vi.,Safe Haskell会有帮助(可能很多),但

如何做到安全
userDefinedFunction
应该是不受信任的第三方代码。它应该建立在快速,优化的代码,但不应该能够直接访问系统


我想它应该结合和。有没有关于这方面的项目或教程?

有一个wiki页面,专门针对
您还可以查看lambdabots源代码。

mueval
的开发考虑了其中一些属性。遗憾的是,它可能在性能上有所欠缺。如果有一些llvm nacl绑定就太好了。如果没有性能要求,可以使用Lua之类的东西。我想要用户贡献的数学密集型代码。@Vi.,Safe Haskell会有帮助(可能很多),但您仍然需要注意内存使用(您需要使用GHC选项来限制堆和堆栈的总量,和/或使用您的操作系统来限制它们)、CPU时间(您的操作系统可能会有帮助),当然还有GHC中的错误。@dfeur,对于桌面场景,我认为资源耗尽(CPU HOG,内存)风险较低,与运行恶意代码的用户帐户折衷相反。我目前考虑的一个场景是:一个具有用户贡献级别的游戏,预期其中包含性能关键代码。@dfeuer,1。我希望它类似于。2.必须有人是第一个收到第一批bug的人,以便为以后的新安全平台提供一种方法。具有用户贡献级别的桌面游戏应用程序是一个很好的开端,因为安全要求不是很严格,但应该采取明显的预防措施。我认为基于Safe Haskell的方法肯定会比“手动”方法(在编译之前尝试“杀毒”源代码)更安全。虽然这个链接可能会回答这个问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效。
userDefinedFunction = "\x -> x*x :: Int"
main = do
    f <- complileFunction userDefinedFunction :: Int -> Int
    let results = map f [1,2,3,4]
    print $ show results