在oracle中加密解密PL SQL包

在oracle中加密解密PL SQL包,oracle,package,procedure,Oracle,Package,Procedure,是否有任何方法可以使用特定密钥加密oracle中的SQL包、存储过程、函数等,并使用相同的密钥进行解密以达到安全目的??? 我正在使用oracle 12c 谢谢,是的,您可以使用包裹工具进行此操作,请参阅 您可以包装PL/SQL源文本,从而防止任何人使用静态数据字典视图*显示该文本 原则上不支持解密,但是您可以使用类似的工具。是的,您可以为此使用包装工具,请参阅 您可以包装PL/SQL源文本,从而防止任何人使用静态数据字典视图*显示该文本 原则上不支持解密,但是您可以使用。我喜欢Wernfrie

是否有任何方法可以使用特定密钥加密oracle中的SQL包、存储过程、函数等,并使用相同的密钥进行解密以达到安全目的??? 我正在使用oracle 12c

谢谢,

是的,您可以使用包裹工具进行此操作,请参阅

您可以包装PL/SQL源文本,从而防止任何人使用静态数据字典视图*显示该文本

原则上不支持解密,但是您可以使用类似的工具。

是的,您可以为此使用包装工具,请参阅

您可以包装PL/SQL源文本,从而防止任何人使用静态数据字典视图*显示该文本


原则上不支持解密,但是您可以使用。

我喜欢Wernfried的答案。如果可以的话,我想扩大一点

假设您将尝试一些人说容易破解的包裹方法,以下是检查其有效性的方法:

如果执行WRAPd对象会显示任何逻辑或SQL,请与tkprof进行检查 检查V$SQL和相关视图,查看执行WRAPd对象是否显示任何逻辑或SQL 请与OEM联系,查看执行WRAPd对象是否会显示任何逻辑或SQL 我从来没有测试过上面的内容,但是如果我考虑使用WRAP,我会这样做,这样我就知道它提供的任何保护的极限。鉴于DBA能够监视和调优查询的重要性,如果SQL至少不能通过标准性能视图/查询确定,我会感到惊讶

另外请注意,如果您的代码有任何动态SQL或PLSQL,则这可能会在包装文件的符号表中显示为十六进制代码

我认为您不能包装触发器代码,当然您可以让触发器调用包装好的PLSQL过程

如果您是一个软件供应商,考虑到上面关于SQL监控的观点,并且假设DBA能够访问一个合适的破解程序,我认为您没有多少方法可以阻止客户DBA对您的代码进行篡改。您可以通过限制对DBA_源、V$SQL和相关视图的访问来防止非DBA用户这样做

出于兴趣,我看了一下PLSQL的本机编译,看看是否可以提供编译后的M代码而不是PLSQL源代码,但似乎您也必须提供PLSQL代码

还有什么其他选择?PLSQL是否可以隔离到远程受保护的数据库,并通过RESTAPI调用使用?这在很大程度上取决于应用程序逻辑和数据访问,以及在受保护的远程服务器上提供此类服务是否可行


最后一件事,如果我想隐藏逻辑的话,最后一件事就是实现PROC/C/java模块来创建外部库。但这里也要注意,ProC/C/Java中的SQL调用仍将在V$SQL中公开。另外,写Pro*C的人已经不多了。

我喜欢Wernfried的答案。如果可以的话,我想扩大一点

假设您将尝试一些人说容易破解的包裹方法,以下是检查其有效性的方法:

如果执行WRAPd对象会显示任何逻辑或SQL,请与tkprof进行检查 检查V$SQL和相关视图,查看执行WRAPd对象是否显示任何逻辑或SQL 请与OEM联系,查看执行WRAPd对象是否会显示任何逻辑或SQL 我从来没有测试过上面的内容,但是如果我考虑使用WRAP,我会这样做,这样我就知道它提供的任何保护的极限。鉴于DBA能够监视和调优查询的重要性,如果SQL至少不能通过标准性能视图/查询确定,我会感到惊讶

另外请注意,如果您的代码有任何动态SQL或PLSQL,则这可能会在包装文件的符号表中显示为十六进制代码

我认为您不能包装触发器代码,当然您可以让触发器调用包装好的PLSQL过程

如果您是一个软件供应商,考虑到上面关于SQL监控的观点,并且假设DBA能够访问一个合适的破解程序,我认为您没有多少方法可以阻止客户DBA对您的代码进行篡改。您可以通过限制对DBA_源、V$SQL和相关视图的访问来防止非DBA用户这样做

出于兴趣,我看了一下PLSQL的本机编译,看看是否可以提供编译后的M代码而不是PLSQL源代码,但似乎您也必须提供PLSQL代码

还有什么其他选择?PLSQL是否可以隔离到远程受保护的数据库,并通过RESTAPI调用使用?这在很大程度上取决于应用程序逻辑和数据访问,以及在受保护的远程服务器上提供此类服务是否可行

最后一件事,如果我想隐藏逻辑的话,最后一件事就是实现PROC/C/java模块来创建外部库。但这里也要注意,SQLCal


ProC/C/Java中的ls仍将在V$SQL中公开。另外,编写Pro*C的人已经不多了。

使用wrap功能只是混淆,而不是加密。它可以通过各种可用的网站、python脚本和其他PL/SQL过程轻松撤销。为了使代码的解释变得更加困难,您还可以做一些额外的模糊处理。Oracle的SQL Developer为此提供了一些内置函数,因此,即使代码已展开,也仍然很难读取。下面是另一个自定义模糊处理工具包的示例:。对于商业级工具包,请检查以下内容:

使用wrap功能只是混淆,而不是加密。它可以通过各种可用的网站、python脚本和其他PL/SQL过程轻松撤销。为了使代码的解释变得更加困难,您还可以做一些额外的模糊处理。Oracle的SQL Developer为此提供了一些内置函数,因此,即使代码已展开,也仍然很难读取。下面是另一个自定义模糊处理工具包的示例:。对于商业级工具包,请查看:

这是唯一合理的答案。但是没有办法像被问到的那样使用一个特定的键来包装。这是唯一合理的答案。但是没有办法按照要求使用特定的键进行包装。