1

我想提供创建高级选择的可能性,比可以通过 quickviewer 创建的左连接更深刻。

最简单的方法是允许用户通过"GENERATE SUBROUTINE POOL"插入一些源代码。

但我必须确保此源代码不会更改任何数据、启动其他程序或执行除评估数据之外的任何操作。

我的想法是将插入的源代码限制为一些关键世界,如 SELECT、LOOP、IF 等。在这种情况下,我需要在插入的源代码中找到所有关键词,并对照一些白名单进行检查。

我怎么能这样做?有什么方法可以绕过我的限制以造成一些真正的损害?还有其他方法可以达到我的目标吗?

4

1 回答 1

2

保护这样的东西真的很难做到,这不是个人限制或平台问题。您无法让机器理解程序员在做什么 - 请参阅Halting Problem。为自己进行关键字扫描是一项繁琐的工作。您可能想尝试 扫描 ABAP-SOURCE并查看扫描仪抛出的表格。然而,对最基本的语言元素的限制只会让你走到这一步,因为对于任何实质性的编程,你都必须允许外部子例程调用,然后你很容易受到任何事情的影响。在我看来,最好将规范交给开发人员,并在没有任何动态内容的情况下开发报告。这样,您还可以确保不会仅仅因为破解 SELECT 语句的用户不知道该取消标志而创建不正确的报告...

于 2012-07-21T15:53:27.723 回答