Unsichere Ausdrücke ???

 

"Microsoft Office Access kann ??? auf Grund von Sicherheitsbeschränkungen nicht öffnen."

 

Sicherheitswarnung: "??? wird geöffnet. Diese Datei ist möglicherweise nicht sicher, ..."

 

"Unsichere Ausdrücke sind Blockiert"

 

"Microsoft Jet 4.0 Service Pack 8 oder eine neuere Version muß installiert sein, um unsichere Ausdrücke ohne Beeinträchtigung der normalen Funktion zu blockieren..."

 

Wer mit Microsoft Office Access die ein oder andere Anwendung oder Datenbank schreibt, stößt spätestens mit der Version 2003 auf das Problem, daß beim öffnen der Datenbank läßtige Warnmeldungen wie z.B. die oben beschriebenen erscheinen, welche vom Benutzer erst mal alle in der korrekten Weise bestätigt werden müßen, bevor die Anwendung/Datenbank endlich öffnet... Das sind schon mal vier bis fünf Klicks...

 

Das ist nicht nur läßtig sondern für die meisten Anwender/Anwenderinnen einfach zu viel verlangt.

 

Einer der einfacheren Wege ist nun die Makrosicherheit zu reduzieren in dem man in Access unter Sicherheit die Einstellung ändert. Dies muß dann aber für jeden einzelnen Benutzer gemacht werden. Wenn das Netzwerk keine wandernden Profile unterstützt, zudem an allen PC's für jeden Benutzer. Oft wird der Eintrag für die Sicherheitseinstellungen im Access Menü gar nicht angezeigt und man muß diesen erst mühevoll mit rechtsklick und Menü Anpassen hinzu fügen. Tja, und das nächste Office Update macht dies dann alles wieder Rückgängig.

 

Und was ist wenn die User nur eine der kleineren Office Versionen im Einsatz hat und man diesem die Access Runtime ab Version 2003 zur Verfügung stellt? Dort gibt es diesen Menüeintrag nicht und das Menü läßt sich auch nicht bearbeiten/anpassen! In einem Microsoft Artikel hierzu habe ich mal gelesen man solle die Access Vollversion installieren, dann die Sicherheitseinstellungen anpassen und anschliesend wieder die Runtime installieren. Das kann es wirklich nicht sein - oder?

 

Um all dem aus dem Weg zu gehen habe ich euch den Registre Eintrag für Windows XP ausfindig gemacht, welcher euch sowohl in der Runtime als auch in der Vollversion, die Sicherheitseinstellungen auf niedrig setzt und eure Datenbank bzw. eure Access Anwendung wieder sofort ohne Meldungen starten läßt:

 

>Access2003_low_secure_level.reg

Klick den Link mit rechts an und wähle "Ziel Speichern unter" Bitte beachte das in den standarteinstellungen die Erweiterung zu mpg oder ähnlichem geändert wird. Ändere die Erweiterung (Extension) wieder auf ".reg".

Klicke die eben gespeicherte Access2003_low_secure_level.reg nun doppelt an und bestätige die Sicherheitsfrage mit "JA".

 

Das neue "NIEDRIGE" Sicherheits Level greift sofort ohne Neustart beim nächsten Aufrufen von Access 2003 oder Access Runtime 2003.

 

Hier der Ausgeschriebene Key wenn Du diesen von Hand anlegen möchtest:

Unter dem Schlüßel: [HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Access\Security] (Wenn nicht vorhanden dann anlegen)

Einen neuen Wert vom Typ DWORD anlegen und den Wert Hexadezimal "1" hinterlegen.

 

Wer den Registrie Eintrag per Batch Datei ohne Bestätigung des Users übergeben/setzen möchte findet >unter diesem Link eine Anleitung wie dies aus einer Batch heraus geht.

 

Hier abschliesend noch noch die Umschreibung des 'Sandbox' Modus, welcher eben dieses Problem unter einem (warum auch immer) anderen Begriff umschreibt: (Den Topic habe ich gefunden auf http://www.office-loesung.de  , hier noch der direkte Link zum Topic: http://www.office-loesung.de/ntopic35402.php)

 

---------------------------

Geheimnis gelueftet: 'Sandbox'-Modus optimal nutzen, Teil 1

-----------------------------------------------------------

Versionen: Access 97, 2000, 2002/XP und 2003

 

Aus anderen Office-Anwendungen wie Word oder Excel sind Sie

bereits an Sicherheitsmechanismen gewoehnt: Dort weist Sie

der Makrovirenschutz darauf hin, wenn Dokumente Makros

enthalten, die Ihrem System eventuell Schaden zufuegen

koennen. Sie haben dann die Wahl, das Dokument gar nicht,

mit deaktivierten oder mit aktivierten Makros zu oeffnen.

Fuer Access hat Microsoft einen Makrovirenschutz

unverstaendlicherweise erst mit Access 2003 eingefuehrt,

denn auch bei Access besteht seit jeher die Gefahr, dass

beim Oeffnen einer Datenbank ueber ein "AutoExec"-Makro VBA-

Routinen automatisch und vom Anwender unbemerkt ausgefuehrt

werden koennen. Was allerdings nicht bedeutet, dass Access

97, 2000 und 2002 vollkommen schutzlos dastehen. Vielmehr

hat Microsoft bereits vor laengerem einen Schutzmechanismus

fuer Access eingefuehrt, den allerdings kaum kannte. Erst

mit der Einfuehrung von Access 2003 bekommt dieser

Schutzmechanismus die ihm zustehende Aufmerksamkeit. Das

aber auch nur, weil viele Access 2003-Anwender sich durch

ihn gestoert fuehlen.

 

Die Rede ist vom so genannten Sandbox-Modus, dessen

Aktivierung Access 2003 seinen Nutzern geradezu penetrant

bei jedem Start per Sicherheitswarnung ans Herz legt.

Dadurch ist der Eindruck entstanden, dass dieser

Schutzmechanismus erst mit Access 2003 eingefuehrt wurde. Im

Grunde handelt es sich jedoch beim Sandbox-Modus um einen

Schutzmechanismus der Jet Engine, den diese bereits seit

1999 bereitstellt und den auch Access 97, 2000 und 2002

nutzen koennen. Sicherheitsexperten hatten derzeit

herausgefunden, dass ueber so genannte "unsichere

Ausdruecke" aus Access-Datenbanken heraus beliebige VBA- und

DOS-Befehle auf einem System ausgefuehrt werden koennen. Ein

unsicherer Ausdruck waere zum Beispiel die folgende

Anweisung in einer SQL-Abfrage:

 

SELECT Shell("Command.com /c dir X:\*.*")

As Dummy From Tabelle;

 

SQL-Abfragen und darin verwendete Funktionen werden ueber

die Jet-Engine interpretiert und ausgefuehrt. In diesem Fall

wuerde ein Aufruf der Shell-Funktion erfolgen. Diese

Anweisung oeffnet ein DOS-Fenster und zeigt dort das

Verzeichnis von Laufwerk "X:" an. Genauso gut koennte aber

auch der DOS-Befehl "del" aufgerufen werden, der Dateien auf

dem System loescht.

 

Beim Oeffnen einer Datenbank, vor allem wenn sie aus

unbekannter Quelle stammt, besteht also immer die Gefahr,

dass auf diesem Wege Daten und System Schaden zugefuegt

wird. Microsoft hat deshalb die Jet-Engine um den erwaehnten

Sandbox-Modus erweitert, in dem derartige Anweisungen in

Ausdruecken nicht mehr ausgefuehrt werden. Neben der

Ausfuehrung von Funktionen in SQL-Abfragen blockiert der

"Sandbox"-Modus die Ausfuehrung von Funktionen in

Ausdruecken, die Eigenschaften oder Ereignisprozeduren von

Steuerelementen, Formularen oder Berichten zugewiesen

wurden. Zum Beispiel:

 

Standardwert: "=Shell("Command.com /c dir X:\*.*")")

Bei Fokuserhalt: "=Shell("Command.com /c dir X:\*.*")").

 

Blockiert werden in Ausdruecken neben einigen

"gefaehrlichen" VBA-Funktionen wie "Shell", "Kill",

"FileCopy", "DeleteSetting" oder "SendKeys" auch

verschiedene Objekte und Methoden wie "DBEngine",

"FileSearch", "CompactRepair", "FollowHyperlink" oder

"DDEExecute". Insgesamt umfasst die Liste der blockierten

Funktionen, Objekte und Methoden ueber 60 Eintraege. Eine

detaillierte Aufstellung finden Sie in den folgenden

Knowledge Base-Beitraegen:

 

Access 97: http://support.microsoft.com/default.aspx?kbid=239104

 

Access 2000/2002: http://support.microsoft.com/default.aspx?kbid=239482

 

Access 2003: http://support.microsoft.com/default.aspx?kbid=294698

 

Bitte beachten Sie, dass der SandBox-Modus fuer Access 97

erst nach der Installation des Service Release 1 fuer Office

97 und Service Pack 3 fuer die Jet-Engine 3.x verfuegbar

ist.

 

Bevor Sie den Sandbox-Modus der Jet-Engine aktivieren

sollten Sie pruefen, ob Sie in Ihren Datenbanken unsichere

Ausdruecke mit Funktionen, Objekten oder Methoden einsetzen,

wie sie in den oben genannten Knowledge Base-Beitraegen

aufgefuehrt sind. Schlimmstenfalls laufen Ihre Datenbanken

nach der Aktivierung gar nicht mehr, liefern falsche

Ergebnisse oder sind wegen fortwaehrend angezeigter

Fehlermeldungen nicht mehr zu bedienen. Sie muessen auch

damit rechnen, dass einige der Access-Assistenten nicht mehr

funktionieren, da sie teilweise von "unsicheren Ausdruecken"

Gebrauch machen.

 

Ausserdem muessen Sie beachten, dass Access bei aktiviertem

Sandbox-Modus meistens keine vernuenftige Fehlerbehandlung

ermoeglicht. Es wird naemlich nicht etwa eine eindeutige

Fehlermeldung der Form "Unsicherer Ausdruck '<Ausdruck>'

wurde blockiert!" angezeigt, vielmehr verwirrt Access den

Anwender/Entwickler mit nichts sagenden Meldungen der Form

"JET_errExprUnknownFunction", "Die angeforderte Funktion ist

nicht installiert oder wurde deaktiviert", "Unknown function

name", "Die vorherige Operation wurde abgebrochen" und so

weiter...

 

Schliesslich ist noch im Auge zu behalten, dass der Sandbox-

Modus nicht nur Access beeinflussen kann: Da der Sandbox-

Modus auf Ebene der Jet Engine implementiert ist, koennen

auch Anwendungen betroffen sein, die per Office Automation

beziehungsweise DAO auf Datenbanken zugreifen. Es ist also

unter Umstaenden damit zu rechnen, dass zum Beispiel eine in

Word-, Excel- oder Visual Basic erstellte Anwendung mit

Office Automation- oder DAO-Zugriff nach Aktivierung des

Sandbox-Modus Probleme bereitet.

 

Soviel zunaechst zu den Grundlagen des "Sandbox"-Modus.

Welche Voraussetzungen zu erfuellen sind und wie dieser

Modus eingeschaltet und genutzt wird, ist Inhalt des zweiten

Teils dieses Tipps in der naechsten Woche.

 

Geheimnis gelueftet: 'Sandbox'-Modus optimal nutzen, Teil 2

------------------------------------

Versionen: Access 97, 2000, 2002/XP und 2003

 

Voraussetzung fuer die Nutzung des Sandbox-Modus ist, wie in

der letzten Woche erwaehnt, das Service Pack 3 fuer die Jet

Engine 3 (Access 97) beziehungsweise das Service Pack 8 fuer

die Jet Engine 4 (Access 2000, 2002, 2003). Um

festzustellen, welches Service Pack auf Ihrem System

installiert ist, gehen Sie wie folgt vor:

 

1. Starten Sie den Windows-Explorer und oeffnen Sie das

Verzeichnis \WINDOWS\SYSTEM (Windows 9x) beziehungsweise

\WINNT\SYSTEM32 (Windows NT, 2000, XP).

 

2. Lokalisieren Sie die Datei MSJET3x.DLL (Access 97) bzw.

MSJET40.DLL (Access 2000, 2002, 2003).

 

3. Klicken Sie mit der rechten Maustaste auf die Datei und

waehlen Sie EIGENSCHAFTEN im Kontextmenue an.

 

4. Im daraufhin angezeigten Dialog pruefen Sie die Version

der DLL. Die ersten beiden Zifferngruppen wie

beispielsweise "4.00" oder "3.51" definieren die Version

der Jet Engine. Die dann folgende, vierstellige

Zifferngruppe gibt Auskunft ueber das Service Pack. Eine

Zahl im 3000er-Bereich steht zum Beispiel fuer ein

Service Pack 3, eine Zahl im 8000er-Bereich fuer ein

Service Pack 8.

 

Sollten Sie also bei MSJET3x.DLL (Access 97) beziehungsweise

MSJET40.DLL (Access 2000, 2002, 2003) Werte vorfinden, die

nicht im 3000er- beziehungsweise 8000er-Bereich liegen,

muessen Sie die jeweils aktuellste Version unter den

folgenden Adressen herunterladen:

 

Access 97, Jet Engine 3.xx: http://support.microsoft.com/default.aspx?kbid=172733

 

Access 200, 2002, 2003, Jet Engine 4: http://support.microsoft.com/default.aspx?kbid=239114

 

Bitte beachten Sie, dass das Service Pack fuer die Jet

Engine 4 in unterschiedlichen Versionen verfuegbar ist, die

speziell auf einzelne Betriebssysteme abgestimmt sind. Das

Service Pack 3 fuer die Jet Engine 3 steht nur in einer

Version zur Verfuegung, die unter allen Betriebssystemen

eingesetzt werden kann.

 

Wenn Sie in Ihren Datenbanken, Office-Loesungen oder Visual

Basic/C-Anwendungen unsichere Ausdruecke verwenden, die bei

aktiviertem Sandbox-Modus blockiert werden wuerden, koennen

Sie die Blockade vermeiden, indem Sie die Funktionalitaet in

benutzerdefinierte VBA-Funktionen auslagern. Access geht

davon aus, dass der Aufruf einer eigenen Funktion als Sicher

einzustufen ist, da ein solcher Vorgang nicht von Aussen

gesteuert werden kann.

 

Der Sandbox-Modus wird ueber einen Registry-Eintrag

"SandboxMode" aktiviert und gesteuert. Dieser Eintrag ist

vom Datentyp "DWORD" und kann die folgenden Werte enthalten:

 

+ 0 - Sandbox-Modus ist deaktiviert. Hat die gleiche

Wirkung, als wenn der Eintrag nicht vorhanden ist. Keine

Sicherheit fuer Access und System!

 

+ 1 - Sandbox-Modus ist fuer den Zugriff von Access aus

aktiviert. Bei anderen, ueber OA/DAO zugreifenden

Anwendungen, erfolgt keine Blockierung. Maximale

Sicherheit fuer die Arbeit mit Access, mittlere Sicherheit

fuer das System.

 

+ 2 - Sandbox-Modus ist fuer den Zugriff von Access aus

deaktiviert. Bei anderen, ueber OA/DAO zugreifenden

Anwendungen, erfolgt jedoch eine Blockierung. Keine

Sicherheit fuer Access, maximale Sicherheit fuer das

System.

 

+ 3 - Sandbox-Modus ist fuer jede Art von Zugriffen

aktiviert. Es werden also unsichere Ausdruecke sowohl fuer

Access als auch fuer andere, per OA/DAO zugreifende

Anwendungen blockiert. Empfohlene Einstellung fuer

maximale Sicherheit.

 

Der Eintrag "SandboxMode" ist je nach Access-Version in den

folgenden Abschnitten anzulegen:

 

Access 97: HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\3.5\Engines\SandboxMode

 

Access 2000, 2002, 2003: HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engines\SandboxMode

 

Standardmaessig ist dieser Eintrag nicht vorhanden oder es

ist dafuer der Wert "2" oder "3" eingetragen, wenn die

Aktivierung beispielsweise aus Access 2003 erfolgte. Um den

Eintrag fuer andere Access-Versionen anzulegen bzw. den Wert

fuer alle Access-Versionen zu aendern, gehen Sie wie folgt

vor:

 

1. Waehlen Sie das Menue START-AUSFUEHREN an, geben Sie

"regedit" ein und druecken Sie die Return-Taste oder

klicken Sie auf OK.

 

2. Lokalisieren Sie je nach Access-Version den oben

genannten Abschnitt.

 

3. Sollte der Eintrag "SandboxMode" noch nicht vorhanden

sein, klicken Sie zunaechst mit der rechten Maustaste auf

den Ordner "Engines", waehlen Sie NEU-DWORD-WERT im

Kontextmenue an und benennen Sie den neuen Eintrag

"SandboxMode".

 

4. Um den Wert zu aendern, oeffnen Sie den Eintrag

"SandboxMode" per Doppelklick, geben den gewuenschten

Wert im Bereich "0" bis "3" ein und druecken dann die

Return-Taste oder klicken auf OK.

 

Je nach zugeordnetem Wert ist Ihr Access und/oder das System

nun gegen die Ausfuehrung unsicherer Ausdruecke geschuetzt.

Bitte beachten Sie, dass die Einstellungen fuer den Sandbox-

Modus nur beim Start von Access ausgewertet werden! Nach

Aenderungen muessen Sie Access gegebenenfalls einmal beenden

und neu starten!

 

Soviel zu dem in allen Access-Versionen nutzbaren "Sandbox"-

Modus. Ab Access 2003 kommt zu diesem Sicherheitsmechanismus

noch die Makrosicherheit hinzu. Details dazu verraet der

dritte Teil und letzte Teil dieses Tipps in der naechsten

Ausgabe.

 

Geheimnis gelueftet: 'Sandbox'-Modus optimal nutzen, Teil 3

------------------------------------

Versionen: Access 2003

 

Access 2003 praesentiert Ihnen beim Oeffnen einer Datenbank

gegebenenfalls zusaetzlich zur Sicherheitswarnung zum

Sandbox-Modus eine weitere Warnung inklusive

Sicherheitsabfrage. Sie werden dabei auf eventuell in der

Datenbank vorhandenen Code hingewiesen, der - ueber das

"AutoExec"-Makro oder ein per EXTRAS-START spezifiziertes

Start-Formular automatisch und unbemerkt ausgefuehrt - Daten

und System erheblichen Schaden zufuegen kann. Sie kennen

diese Abfrage unter der Bezeichnung "Makrovirusschutz" seit

Office 97 aus anderen Office-Anwendungen. Und genau wie

dort, koennen Sie ueber das Menue EXTRAS-MAKRO-SICHERHEIT

(oder die Registry, siehe unten) eine Sicherheitsstufe

einstellen und damit steuern, ob eine Sicherheitsabfrage

erfolgen soll oder nicht:

 

* Stufe "Niedrig": Es werden keine Sicherheitsabfragen zu

Code oder Makros mehr angezeigt. Es erfolgt keine

Ueberpruefung der Einstellungen fuer den Sandbox-Modus.

 

* Stufe "Mittel": Bei unsignierten Datenbanken wird eine

Sicherheitsabfrage angezeigt, ob die Datenbank geoeffnet

werden soll oder nicht. Access prueft weiterhin, ob

"SandboxMode" auf "1" oder "3" eingestellt ist - wenn

nicht, sind ein oder zwei weitere Sicherheitsabfragen zum

Sandbox-Modus zu beantworten.

 

* Stufe "Hoch": Unsignierte Datenbanken werden ohne weitere

Hinweise nicht mehr geoeffnet. Bei signierten Datenbanken

prueft Access, ob "SandboxMode" auf "1" oder "3"

eingestellt ist - wenn nicht, sind ein oder zwei weitere

Sicherheitsabfragen zum Sandbox-Modus zu beantworten.

 

Das fuehrt nun dazu, dass der Start von Access

gegebenenfalls in eine reine Klickorgie ausartet: Bevor Sie

endlich mit der Datenbank arbeiten koennen, sind zunaechst

diverse Sicherheitsabfragen zu beantworten - und wenn Sie

die falsch beantworten, oeffnet sich die Datenbank mitunter

ueberhaupt nicht. Vor allem wenn mit mehreren, regelmaessig

zu wechselnden Datenbanken gearbeitet werden muss, ist dabei

schnell die Grenze des Ertraeglichen erreicht.

 

Um es gleich vorwegzunehmen: "Viel Schutz ohne Klicks" gibt

es nicht. Ab Sicherheitsstufe "Mittel" in der

Makrosicherheit wird auch immer der Sandbox-Modus geprueft

und gegebenenfalls dessen Aktivierung angemahnt. Eine

Deaktivierung des Sandbox-Modus oder die Einstellung

"SandboxMode = 2" ist somit nur in der Sicherheitsstufe

"Niedrig" moeglich - und die sollten Sie moeglichst nicht

waehlen, weil sonst, wie oben erwaehnt, boesartige Routinen

ueber das "AutoExec"-Makro oder ein per EXTRAS-START

spezifiziertes Start-Formular automatisch und unbemerkt

ausgefuehrt werden koennten. Es bleibt Ihnen nichts weiter

uebrig, als die Sicherheitsstufe "Mittel" zu waehlen und den

Sandbox-Modus auf "1" oder "3" einzustellen, um von

Klickorgien beim Start von Access 2003 beziehungsweise beim

Oeffnen einer Datenbank verschont zu bleiben - es waere dann

nur noch das Oeffnen von Datenbanken zu bestaetigen, die

Makros oder VBA-Routinen enthalten.

 

Sicherlich bliebe als Alternative noch die Signierung Ihrer

Datenbanken und die Einstellung der Sicherheitsstufe auf

"Hoch". Allerdings muss dann auch der Sandbox-Modus auf "1"

oder "3" eingestellt sein und - weitaus schlimmer - die

Signierung der Datenbank nach jeder noch so kleinen

Aenderung wiederholt werden.

 

Die Einstellungen fuer die jeweils gewaehlte Stufe in der

Makrosicherheit haelt Access 2003 in der Registry im

folgenden Abschnitt in einem Eintrag "Level" vom Datentyp

"DWORD" fest:

 

HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\

Access\Security

 

Der Wert "1" entspricht der Sicherheitsstufe "Niedrig", "2"

entspricht "Mittel" und "3" entspricht "Hoch". Wie in der

letzten Ausgabe bereits erlaeutert, koennen Sie diese

Einstellungen auch "von aussen" per "RegEdit" aendern.

---------------------------