Um beim Zugriff auf lokale Ressourcen des Cloud Hosts via Cloud Clients gewisse Einschränkungen gewährleisten zu können, gibt es die Restrict Scripting Option, um das Scripting einzuschränken. So können Dateizugriffe und das Importieren von Nicht-Vertec-Modulen verhindert werden.
Im Cloud Abo ist diese Option immer aktiviert und kann nicht ausgeschaltet werden.
Das Restrict Scripting hat folgende Konsequenzen:
- Es laufen keine VB Scripts. Falls ein VB Script ausgeführt wird, wird ein Fehler geworfen.
- Für Python wurde eine Sandbox eingeführt. Im Wesentlichen können nur Module importiert werden, welche auf der Whitelist sind.
Die Einstellung wirkt nur für Cloud-Sessions (Cloud Server). Die Desktop App ist nicht betroffen.
Ab Vertec 6.7.0.7 befinden sich die riskanten Module ctypes, win32* (sämtliche Module die mit win32 beginnen), win2kras, winsound und winxpgui im Unterordner PythonUnsafe
im Vertec Installationsverzeichnis. Dieser Ordner kann gelöscht werden, falls die Module nicht verwendet werden, um auch die Desktop App besser zu schützen.
Der Import im Restricted Modus geschieht wie folgt:
- Es wird geprüft, ob ein Import Zugriff ein registriertes Script aus der Vertec-DB betrifft
- Falls nicht, werden als weitere importierbare Module nur folgende erlaubt:
- vtcapp und datetime
- ab Vertec 6.2.0.8: requests
- ab Vertec 6.2.0.11: string, re, json, urlparse, email, smtplib, base64
- ab Vertec 6.3: vtcextensions
- ab Vertec 6.3.0.2: ziputils
- ab Vertec 6.3.0.16: difflib, StringIO, textwrap, unicodedata, stringprep, calendar, collections, heapq, bisect, array, decimal, fractions, random, itertools, functools, operator, hashlib, hmac, time, HTMLParser, locale, traceback sowie die Python Package email mit allen ihren Sub-Modulen.
- ab Vertec 6.4.0.15: zeep
Die abschliessende Liste der eingebauten, global verfügbaren Symbole (Funktionen und Konstanten) ist im Restricted Modus auf folgende beschränkt:
['False', 'None', 'True', 'abs', 'basestring', 'bool', 'callable', 'chr', 'cmp', 'complex', 'divmod', 'float', 'hash', 'hex', 'id', 'int', 'isinstance', 'issubclass', 'len', 'long', 'oct', 'ord', 'pow', 'range', 'repr', 'round', 'str', 'tuple', 'unichr', 'unicode', 'xrange', 'zip', "apply", "dict", "enumerate", "filter", "getattr", "hasattr", "iter", "list", "map", "max", "min", "sum", "all", "any"]
Diese Liste wurde mit Vertec 6.2.0.2 um folgende Funktionen und Konstanten ergänzt:
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', 'bin', 'buffer', 'bytearray', 'bytes', 'classmethod', 'coerce', 'delattr', 'dir', 'format', 'frozenset', 'locals', 'next', 'object', 'property', 'reduce', 'reload', 'reversed', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'super', 'type']
Und in Version 6.3.0.16 um die Funktion 'help'.