本文介绍了plv8禁用eval()中的执行和准备功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在我的评估中停用对plv8函数的访问?
How could I deactivate the access to plv8 functions in my eval?
create or replace function
js(src text, input json) returns json as $$
plv8.elog(NOTICE, 'test');
//--plv8 = null; // this would disable permanently plv8, also after another call of the function
var evalRes = eval('var output=null; ' + src + '; output;');
return JSON.stringify(evalRes);
$$ LANGUAGE plv8;
推荐答案
我终于找到了解决方案:
I finally found the solution:
create or replace function
public.js(src text, input json) returns json as $$
//-- select js('var a = input.test; var output = []; for(k in a) { output.push(10+a[k]); };', '{"test": [1,2,3]}'::json)
//-- select public.js('plv8.elog(NOTICE, "yoyo");', null) // should not be possible
plv8.elog(NOTICE, 'test');
var evalRes = null;
(function() {
var plv8 = null; //-- In order to disable execute, prepare...
evalRes = eval('var output=null; ' + src + '; output;');
})();
plv8.elog(NOTICE, 'test2');
return JSON.stringify(evalRes);
$$ LANGUAGE plv8;
这篇关于plv8禁用eval()中的执行和准备功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!