Best Practice Leitfaden Development - DSAG
Best Practice Leitfaden Development - DSAG
Best Practice Leitfaden Development - DSAG
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Vorteil:<br />
> deutliche steigerung der Flexibilität<br />
> Beispiel 1: eigener aufbau von user exits<br />
durch die statische definition einer abstrakten Klasse inkl. Methodensignatur wird das Grund-<br />
gerüst für einen „user exit“ vorgegeben. anschließend können mehrere konkrete impleme-<br />
tierungen dieser abstrakten Klasse angelegt werden. innerhalb Quellcodes wird z.B. aus einer<br />
Customizing-tabelle der name der zu verwendenden konkreten Klassenimplementierung<br />
gelesen und diese aufgerufen. somit können unterschiedliche implementierungsvarianten<br />
per Customizing aktiviert/deaktiviert werden.<br />
> Beispiel 2: dynamische WHere-Bedingung<br />
nachteil:<br />
zur Laufzeit wird die WHere-Bedingung für eine datenbankoperation, z.B. seLeCt, in einer<br />
string-Variablen erstellt. dadurch können komplizierte Case-abfragen vermieden werden,<br />
die abhängig von den eingaben verschiedene osQL-Befehle ausführen.<br />
> durch die nutzung von dynamischen aufrufen geht der Verwendungsnachweis innerhalb der aBaP-<br />
entwicklungsumgebung verloren. Problematisch sind dann Änderungen an den aufrufzielen. ein<br />
entwickler, der beispielsweise die Übergabeparameter eines Funktionsbausteins ändert, der von<br />
einem Programm dynamisch aufgerufen wird, bemerkt diese Verwendung über den Verwendungs-<br />
nachweis nicht.<br />
> Bei der dynamischen Programmierung ist i.d.r. zur designzeit keine syntaktische Prüfung möglich;<br />
bei fehlerhafter Belegung der variablen inhalte (z.B. fehlerhafte Klammerung innerhalb einer<br />
dynamischen WHere-Klausel, fehlerhafter name einer Klasse) kommt es zu einem ungeplanten<br />
abbruch des Programms (Kurzdump).<br />
> dynamische Programmierung birgt hohe sicherheitsrisiken, insbesondere dann, wenn die dynamischen<br />
inhalte durch ungeschützten zugriff beeinflussbar sind (z.B. wenn der name einer aufzurufenden<br />
Klasse /eines Funktionsbausteins oder einer WHere-Bedingung durch Benutzereingaben beein-<br />
flusst werden kann, stichwort: Code injection).<br />
BEST PRACTICE: dynamische Programmierung sollte nur sehr dosiert und kontrolliert zum einsatz<br />
kommen. Programmcode, der dynamische anteile enthält, sollte nach dem Vier-augen-Prinzip<br />
kontrolliert und dokumentiert werden, denn er stellt ein potenzielles sicherheitsrisiko dar.<br />
im Kapitel 5.2 wird das thema dynamische Programmierung auch im Kontext sicherheit behandelt.<br />
11<br />
<strong>Best</strong> <strong>Practice</strong> <strong>Leitfaden</strong> deveLoPment, 31. Januar 2013, © dsaG e. v.