Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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
Javascript 允许客户端编写和执行条件语句的Web界面_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript 允许客户端编写和执行条件语句的Web界面

Javascript 允许客户端编写和执行条件语句的Web界面,javascript,reactjs,redux,Javascript,Reactjs,Redux,我正在编写一个基于web的系统,使用带有react和redux的flask,它需要基于web的客户端编写条件语句,这些语句可以保存到配置文件中,但也可以在不重新启动服务器或其他服务的情况下实时执行。 显然,这可以使用eval()来完成,但显然我们不会使用它。 运行调用活动变量以执行计算的用户条件是否有安全的方法 例如,他们可能希望执行标准条件计算,如: if(a===1 && (b===2 || c===2)){ //do something } 其中a、b和c是从服务器提

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

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

if(a===1 && (b===2 || c===2)){
  //do something
}
其中a、b和c是从服务器提供给客户机并动态更改的值


根据问题更新:

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

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

您能给出此抽象背后的真实用例吗?也就是说,我们谈论的是什么配置?我怀疑可能会有另一种解决方案,因为这听起来不像是常见的做法。如何使用在其中运行脚本的自定义iframe?最安全的方法是实现一个简单的解析器,它可以将条件配置作为文本,然后将它们转换为代码中的对象,您可以使用这些对象来执行没有实际运行提供的代码的文本。如果您选择这样做,我建议您查看抽象语法树和解析器生成器,开始使用该方法!好主意。我想接下来的问题是
eval()
(或任何类似的东西)是否是一个大问题,或者只要我真的确定不可能向
eval()
函数提交不好的东西就可以了?我可以在提交这些字符串时,以及在将它们读入
eval()
之前,对它们进行正则化?