Javascript 允许客户端编写和执行条件语句的Web界面
我正在编写一个基于web的系统,使用带有react和redux的flask,它需要基于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是从服务器提
eval()
来完成,但显然我们不会使用它。
运行调用活动变量以执行计算的用户条件是否有安全的方法
例如,他们可能希望执行标准条件计算,如:
if(a===1 && (b===2 || c===2)){
//do something
}
其中a、b和c是从服务器提供给客户机并动态更改的值
根据问题更新: 服务器提供由服务器监控的报警的实时更新。当报警状态发生变化时(比如从无报警变为处于报警状态),它会将新数据发送到客户端。 客户端将此信息呈现为报警列表。该列表可以很容易地进行筛选,但有一个问题是,您可能会有一个警报泛滥事件,其中约1000个警报同时出现。您还有一些标准/常见事件,其中一系列特定的报警都会同时更改为特定状态,并指示特定的问题/故障,从而指示特定的修复。 每个用户都是唯一的,因此它可以;这是一种一刀切的方法,如果每个用户都可以设置一些基本规则,根据报警的任意组合值及其报警状态确定要显示的消息,这将非常有用。他们将使用浏览器表单选择这些条件状态,然后提交给服务器。这将在服务器上保存的个人配置文件中插入一行,以便每次登录时自动访问这些计算。
如果报警状态发生变化,它会被发送到客户端,然后客户端会在后台自动执行计算,以确定是否需要显示消息。似乎最好的方法是允许字符串,但要确保通过构造良好的函数解析所有字符串,以删除任何恶意内容。 我可能会多次运行此函数—首先是在提交时,也就是在执行之前。
如果这些功能是使用交互式GUI开发的,其中包含下拉按钮和自动填充输入字段,这些字段为用户构造代码(即,用户实际上并没有编写代码),那么应该足够安全。您能给出此抽象背后的真实用例吗?也就是说,我们谈论的是什么配置?我怀疑可能会有另一种解决方案,因为这听起来不像是常见的做法。如何使用在其中运行脚本的自定义iframe?最安全的方法是实现一个简单的解析器,它可以将条件配置作为文本,然后将它们转换为代码中的对象,您可以使用这些对象来执行没有实际运行提供的代码的文本。如果您选择这样做,我建议您查看抽象语法树和解析器生成器,开始使用该方法!好主意。我想接下来的问题是
eval()
(或任何类似的东西)是否是一个大问题,或者只要我真的确定不可能向eval()
函数提交不好的东西就可以了?我可以在提交这些字符串时,以及在将它们读入eval()
之前,对它们进行正则化?