我们正在开发Angular 8 PWA应用程序。该应用程序的一部分允许我们的客户创建自己的自定义表单来收集数据。
作为开发的一部分,我们将一组功能与数据进行交互。但是,由于很难为每种情况提供功能,因此我们正在考虑允许用户管理员创建自己的脚本,以将其保存在数据库中并以表格形式执行。
为了实现这一点,我们正在考虑通过DomSantizer.bypassSecurityTrustScript()
传递脚本>
或可能是“邪恶的” javascript eval()
这将在一个隔离的函数中运行,在该函数中,我们将提供对应用程序中一组有限功能的访问。例如:
if (fnGetFieldValue('FIELD1') === fnGetFieldValue('FIELD2')) {setFnFieldValue('FIELD3')= 'PASS')}
其中fnGetFieldValue()和setFnFieldValue是定义的函数,脚本可访问这些函数来运行一组有限的操作。
问题是,在允许此功能(显而易见的XSS脚本攻击)上,我们确实存在重大的安全问题。 是否有任何策略可以安全地运行这些用户自定义脚本?
考虑到Squarepace,Zoho,powerapps等公司允许用户运行自定义代码,这些解决方案是否也容易出现相同的问题?有谁知道他们如何避免对eval的“邪恶”使用?
对此有充分的想法,是否有任何npm软件包可以对此进行处理以清除某些相关功能?
提前感谢
我们正在开发Angular 8 PWA应用程序。该应用程序的一部分允许我们的客户创建自己的自定义表单来收集数据。作为开发的一部分,我们将集合函数组合在一起...
使用eval
或通过嵌入式脚本将用户脚本集成到自己的代码中时,您面临的主要问题是:该代码可以访问应用程序的上下文,对其进行修改并带来安全风险(例如XSS)。