我目前正在研究设计一个使用 drools 决策表电子表格格式 ( link to jboss drools documentation ) 的业务解决方案。业务用户将拥有并维护电子表格中的规则。
使用决策表格式的一个主要好处是将来可以轻松修改规则以适应不同的规则结构。
Drools 将基于电子表格的规则数据编译为 native 规则格式。编译器的示例实现可以参见 here .
我的安全团队担心的一个问题是,规则电子表格数据是用户输入,所有用户输入都应经过正确性验证,以确保其不包含恶意数据 ( see here for the rationale for input validation )。
问题:
- 是否存在业务用户可能向规则电子表格添加恶意数据的安全风险?
- 风险有多大/严重吗?例如,编译器是否充分验证用户输入的数据?
- 如何降低风险?例如,另一方在将规则部署到生产环境之前直观地验证电子表格中的规则。
最佳答案
由于规则可以包含java代码,因此安全风险实际上比恶意数据更大。用户可以轻松地插入他选择的 java 代码来访问您的系统。
您可以使用 drools 验证程序并编写自己的规则,但不可能消除所有风险。
使用第三方来验证规则可能会起作用,但进行验证的人需要是程序员才能正确评估风险,这首先会抵消使用电子表格的优势。
在我看来,电子表格被高估了:
- 存在您提到的固有安全风险
- 非技术人员很容易修改规则操作部分并导致 XLS 文件损坏
- 定义和使用查找表很痛苦。
我建议,一旦您的项目变得稳定,就放弃电子表格并为决策表实现您自己的用户界面,或者如果您使用 guvnor,请将其嵌入到您的 Web 应用程序中。
关于security - drools电子表格-电子表格规则的输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14327880/