Ansicht
Dokumentation

ABENPROGRAM_GENERATION_ABEXA - PROGRAM GENERATION ABEXA

ABENPROGRAM_GENERATION_ABEXA - PROGRAM GENERATION ABEXA

Fill RESBD Structure from EBP Component Structure   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Programmgenerierung

Das Beispiel demonstriert eine Programmgenerierung mit GENERATE SUBROUTINE POOL.

Quelltext

Ausführen

Beschreibung

Das Programm erlaubt die Eingabe von Deklarationsanweisungen in einen Deklarationsteil und von operationalen Anweisungen in einen Implementierungsteil. Diese Eingaben werden hintereinander in eine Methode eines Musterprogramms, das mit der Anweisung READ REPORT in eine interne Tabelle eingelesen wird, eingefügt. Bei der Auswahl von Ausführen wird das so erzeugte generische Programm wird mit GENERATE SUBROUTINE POOL generiert und die Methode wird aufgerufen. Davor finden Überprüfungen der Syntax mit der Anweisung SYNTAX-CHECK statt.

Da die freie Eingabe von Quelltext für ein generisches Programm die größte aller anzunehmenden Sicherheitslücken darstellt, wurden folgende Sicherheitsvorkehrungen getroffen, um jeden Missbrauch dieses Programms auszuschließen:

  • Im statischen Konstruktor der Klasse display wird überprüft, ob das Programm in einem Produktivsystem, d.h. in einem System mit produktiven Mandanten ausgeführt. In einem solchen System sind keine Eingaben möglich und es werden keine Funktionscodes außer der Dokumentationsanzeige akzeptiert.
  • Im statischen Konstruktor der Klasse display wird überprüft, ob der aktuelle Benutzer im aktuellen System eine Berechtigung für den Aufruf des ABAP Editors und eine Entwicklungsberechtigung für das Ändern und Ausführen von temporären Programmen hat. Nur für einen solchen Benutzer sind Eingaben und eine Programmausführung möglich, da ihm alles, was er hier machen kann, ohnehin auch in der ABAP-Entwicklungsumgebung erlaubt ist.
  • Da es gerade auch Entwickler reizen kann, ein solches Testprogramm auf seine Verwundbarkeit zu überprüfen, sind die verwendbaren Anweisungen wie folgt eingeschränkt:
  • Im Deklarationsteil können nur deklarative Anweisungen eingegeben werden, was durch die gleiche Syntaxprüfung wie für den Deklarationsteil einer Klasse erreicht wird. Diese Überprüfung geschieht in der Methode check_declarations der Klasse program.

  • Im Implementierungsteil sind nur die durch eine Einschlussliste vorgegebenen Anweisungen erlaubt. Eine Ausschlussliste verbietet die Verwendung anderer Klassen oder Objekte bis auf die Ausgabeklasse CL_DEMO_OUTPUT. Diese Überprüfung geschieht in der Methode check_implementation der Klasse program, wofür die Methode CHECK der Klasse CL_DEMO_SECURE_ABAP_CODE aufgerufen wird. Wenn die Anweisungen INSERT, MODIFY oder DELETE verwendet werden, muss die angesprochene Tabelle im Deklarationsteil deklariert sein, was ändernde Zugriffe auf Datenbanktabellen ausschließt.

Hinweis

Falls es Ihnen dennoch gelingt, mit diesem Programm potenziell schadhaften Code zu generieren und auszuführen, ohne den Programmablauf oder die Programmdaten im Debugger zu manipulieren, teilen Sie dies bitte umgehend der Komponente BC-ABA-LA mit.






Addresses (Business Address Services)   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 4128 Date: 20240605 Time: 093532     sap01-206 ( 78 ms )