使用 Oracle 的 WRAP 混淆 PL/SQL 代码有什么好处吗

信息安全 数据库 甲骨文
2021-09-06 04:48:36

Oracle 存储的程序单元(过程、函数、包和类型)可以使用WRAP功能进行混淆。

除了关于“通过默默无闻的安全性”的一般论点之外,使用包装功能是否有任何具体问题?

2个回答

有可用于使用 Oracle 10g 和 11g 机制包装的代码的解包器。其中包括在线“解包器”和用 Python 编写的解包器的源代码。

因此,包装几乎不会阻止具有该访问级别的人获取源代码。

可以使用 *_DEPENDENCIES 视图、通过 SQL 跟踪或使用 DBMS_TRACE 获得代码性质的其他指标。

依赖关系视图将显示程序可以直接或间接调用哪些表和其他对象。SQL 跟踪将显示由于对过程的特定调用而执行的 SQL。这可以包括“绑定变量”,例如显示加密调用中使用的盐。DBMS_TRACE 通常不安装,但安装并启用后,它可用于跟踪代码所采用的路径,包括行号和过程/函数调用。

为了保护代码不被分析,首先应该使用包。使用过程和函数,所有被授予执行程序权限的数据库用户都可以使用全部代码。对于包,只有规范(程序名称和参数名称/数据类型)可用,主体中的实际代码仅对程序所有者和具有高数据库权限的人(通常是 DBA)可见。

看起来,PL/SQL 源文本换行对于消除阅读 PL/SQL 代码的技术手段没有用处,而是为了实现以下一个或多个目标。

  1. 阻止新手软件开发人员依赖实现而不是包和类型的接口。因此,如果修改了这些实现,源文本换行可能会避免向后兼容性问题。
  2. 为了支持这样一种说法,即如果有人会阅读这些实施,那么该人将违反美国的 DMCA 法律,或者至少会在面对明显旨在使这些实施难以阅读的措施时表现出阅读这些实施的意图读。
  3. 防止对任务相当随意且资源相当有限的人获取程序文本。