You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript/Node.js中原生函数引用的安全序列化方案求助

问题背景

在JavaScript/Node.js中保存包含函数的对象时,常见方式是将函数序列化为字符串,但这种方法存在明显缺陷:

  • 依赖eval或new Function(),存在安全与性能隐患
  • 无法处理原生函数引用,例如Math.sin.toString()会返回以下内容,既无法执行,也无法还原为对原Math对象的引用:
    function sin() {
        [native code]
    }
    
待序列化的对象示例
{
    hello: 'world',
    function1: () => {return 'this is a custom function';},
    function2: Math.random,
    function3: Math.sin
}
理想解决方案要求
  • 尽可能避免序列化函数本身,转而保存环境中的变量引用,例如将Math.sin保存为可还原为window['Math']['sin']的形式
  • 不依赖eval或new Function(),以提升安全性
补充说明

我会将数据保存到本地文件系统,而非发送至其他服务器,理论上也可使用JSON以外的格式(如JS文件、二进制文件),只需避免代码注入即可。该文件用于存储AI模型的超参数,其中可能包含类似tanh的原生数学函数。

内容的提问来源于stack exchange,提问作者Ood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:44:52