允许客户端编写和执行条件语句的Web接口



我正在使用带有react和redux的flask编写一个基于web的系统,该系统需要让基于web的客户端编写条件语句,这些条件语句可以保存到配置文件中,但也可以实时执行,而无需重新启动服务器或其他服务。显然,这可以使用eval()来完成,但显然我们不会使用它。有什么安全的方法来运行调用活动变量执行计算的用户条件?

例如,他们可能希望执行标准的条件计算,如:

if(a===1 && (b===2 || c===2)){
//do something
}

其中,a、b和c是从服务器提供给客户端并动态更改的值。


基于问题的更新:

服务器提供由服务器监控的报警的实时更新。当报警状态发生变化时,比如从无报警变为报警中,它会将新数据发送到客户端。客户端将此信息呈现为报警列表。列表可以很容易地过滤,但有一个问题是,你可能会遇到一个警报泛滥事件,大约1000个警报同时出现。您也有一些标准/常见事件,其中特定的一系列警报都会同时更改为特定的状态,这表示特定的问题/故障,从而指示特定的修复。每个用户都是唯一的,所以它可以;这不是一种一刀切的方法,如果每个用户都可以设置一些基本规则,根据警报的任何组合的值及其警报状态来确定显示什么消息,这将是有用的。他们将使用浏览器表单来选择这些条件状态,然后提交给服务器。这将在服务器上保存的个人配置文件中插入一行,以便他们每次登录时都能自动访问这些计算。如果警报状态发生变化,则会将其发送给客户端,客户端会在后台自动执行计算,以确定是否需要显示消息。

看起来最好的方法是允许字符串,但要确保所有字符串都通过构造良好的函数进行解析,以删除任何恶意内容。我可能会多次运行这个函数——首先是在提交时,也就是在执行之前。如果这些功能是使用下拉按钮和自动填充输入字段的交互式GUI开发的,该字段为用户构建代码(即用户实际上并没有编写代码(,那么它应该足够安全。

最新更新