Es kann sinnvoll sein, eine Anwendung und eine Datenbank zu verteilen, ohne dabei die Logik innerhalb der Prozeduren, Funktionen, Trigger, Ereignisse und Ansichten preiszugeben. Als zusätzliche Sicherheitsmaßnahme können Sie den Inhalt dieser Objekte mit der SET HIDDEN-Klausel der Anweisungen ALTER PROCEDURE, ALTER FUNCTION, ALTER TRIGGER und ALTER VIEW verbergen.
Die SET HIDDEN-Klausel verschleiert den Inhalt der zugeordneten Objekte und macht sie unlesbar, wobei die Nutzbarkeit der Objekte nach wie vor möglich ist. Des weiteren können Sie die Objekte in eine andere Datenbank entladen und neu laden.
Die Änderung kann nicht rückgängig gemacht werden und löscht den Originaltext des Objekts. Deshalb ist eine Sicherung des Originaltextes dieses Objekts außerhalb der Datenbank notwendig.
Wenn die preserve_source_format-Datenbankoption auf "On" gesetzt wurde, speichert der Datenbankserver die formatierte Quelle aus CREATE- und ALTER-Anweisungen für Prozeduren, Ansichten, Trigger und Ereignisse und platziert sie in der source-Spalte der entsprechenden Systemansicht. In diesem Fall wird sowohl die Objektdefinition als auch die Quellendefinition ausgeblendet.
Die Einstellung "On" für die preserve_source_format-Datenbankoption verhindert jedoch nicht, dass die ursprüngliche Quellendefinition des Objekts durch die SET HIDDEN-Klausel gelöscht wird.
Bei der Fehlersuche unter Verwendung des Debuggers wird weder die Definition der Prozedur angezeigt, noch zeigen die Prozedurprofilinformationen den Quelltext an.
Eine Ausführung der oben genannten Anweisungen auf einem bereits verschlüsselten Objekt hat keine Auswirkungen.
Um Text für alle Objekte eines bestimmten Typs zu verbergen, können Sie eine der folgenden Schleife ähnliche Schleife verwenden:
BEGIN FOR hide_lp as hide_cr cursor FOR SELECT proc_name, user_name FROM SYS.SYSPROCEDURE p, SYS.SYSUSER u WHERE p.creator = u.user_id AND p.creator NOT IN (0,1,3) DO MESSAGE 'altering ' || proc_name; EXECUTE IMMEDIATE 'ALTER PROCEDURE "' || user_name || '"."' || proc_name || '" SET HIDDEN' END FOR END; |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |