我想提供创建高级选择的可能性,比通过quickviewer创建的左连接更深刻。
最简单的方法是允许用户通过"GENERATE SUBROUTINE POOL"插入一些源代码。
但我必须确保此源代码不会更改任何数据,启动其他程序或执行任何操作而不是评估数据。
我的想法是将插入的源代码重写为一些关键世界,如SELECT,LOOP,IF等。在这种情况下,我需要找到插入的源代码中的所有关键字,并根据某些白名单进行检查。
我怎么能这样做?有没有办法规避我的限制,以便做出一些真正的伤害?还有其他方法可以实现我的目标吗?
答案 0 :(得分:2)
保护这样的东西真的很难,而且这不是个人限制或平台问题。您无法让机器了解程序员正在做什么 - 请参阅Halting Problem。为自己做一个关键字扫描是一项繁琐的工作。您可能想尝试SCAN ABAP-SOURCE并查看扫描仪抛出的表格。但是,限制到最基本的语言元素只会让你到目前为止,因为对于任何实质性的编程,你将不得不允许外部子程序调用,然后你就容易受到任何攻击。在我看来,最好将规范交给开发人员,并且开发的报告没有任何动态的东西。通过这种方式,您还可以确保不会创建不正确的报告,因为用户篡改SELECT语句并不知道该取消标记...