20.04.2013 Aufrufe

Best Practice Leitfaden Development - DSAG

Best Practice Leitfaden Development - DSAG

Best Practice Leitfaden Development - DSAG

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!