PLSQL "give" 脚本但不允许用户读取
PLSQL "give" script but not allow users to read
我是 pl/sql 的新手,我的问题是:是否可以 "compile" 在 sql plus 或 sql 开发人员中编写脚本并将文件提供给其他人为了允许其他人执行代码但不允许他们阅读代码?
听起来您在谈论可以从 SQL 开发人员调用的 Oracle wrap utility (a separate command-line application that is part of your Oracle client install and not a part of SQL Developer) or the dbms_ddl.wrap function。这些创建混淆的语句,这些语句将创建一个行为正常但数据字典中的文本不是人类可读的存储过程(或包或函数)。 wrap 实用程序不提供完美的安全性——Internet 上有一些解包工具和介绍可以让攻击者解包您交给他们的代码。您通常可以通过查看其他数据字典视图(v$sql
将显示已执行的未包装的 SQL 语句)或通过跟踪会话来弄清楚未包装的代码真正在做什么。
这也取决于给这个词的定义。您可以将 PL/SQL 代码存储在数据库中。赋予用户执行权限,可以看到包头的源代码,但不能看到包体的源代码。但是 DBA 当然可以读取它,他们也可以跟踪它(即使它被包装)。
另请注意,PL/SQL 包的包装方式与 PL/SQL 过程不同。从 11g 开始,包使用简单的一对一字节替换进行包装。而对于 PL/SQL 个程序,则存储了 DIANA 虚拟机的混淆字节码。据我所知,PL/SQL 程序没有可访问的解包,逆向工程要困难得多。
我是 pl/sql 的新手,我的问题是:是否可以 "compile" 在 sql plus 或 sql 开发人员中编写脚本并将文件提供给其他人为了允许其他人执行代码但不允许他们阅读代码?
听起来您在谈论可以从 SQL 开发人员调用的 Oracle wrap utility (a separate command-line application that is part of your Oracle client install and not a part of SQL Developer) or the dbms_ddl.wrap function。这些创建混淆的语句,这些语句将创建一个行为正常但数据字典中的文本不是人类可读的存储过程(或包或函数)。 wrap 实用程序不提供完美的安全性——Internet 上有一些解包工具和介绍可以让攻击者解包您交给他们的代码。您通常可以通过查看其他数据字典视图(v$sql
将显示已执行的未包装的 SQL 语句)或通过跟踪会话来弄清楚未包装的代码真正在做什么。
这也取决于给这个词的定义。您可以将 PL/SQL 代码存储在数据库中。赋予用户执行权限,可以看到包头的源代码,但不能看到包体的源代码。但是 DBA 当然可以读取它,他们也可以跟踪它(即使它被包装)。
另请注意,PL/SQL 包的包装方式与 PL/SQL 过程不同。从 11g 开始,包使用简单的一对一字节替换进行包装。而对于 PL/SQL 个程序,则存储了 DIANA 虚拟机的混淆字节码。据我所知,PL/SQL 程序没有可访问的解包,逆向工程要困难得多。