热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle中加密PL/SQL代码

加密一个PLSQL单元就是隐藏PLSQL代码的过程。可以使用oracle提供的wrap工具和DBMS_DDL进行加密。wrap工具在命令行运行来处理一

加密一个PL/SQL单元就是隐藏PL/SQL代码的过程。可以使用oracle提供的wrap工具和DBMS_DDL进行加密。wrap工具在命令行运行来处理一

下面不才根据Oracle官方文档讲解一下如何加密PL/SQL代码,希望大家共同学习:

主要内容包含以下三块:

  • 一、什么叫加密(二进制文件的混淆技术混淆 Obfuscation)?

    加密一个PL/SQL单元就是隐藏PL/SQL代码的过程。可以使用oracle提供的wrap工具和DBMS_DDL进行加密。

    wrap工具在命令行运行来处理一个输入的SQL 文件,例如SQL*PLUS的安装脚本。DBMS_DDL子程序加密单个动态生成的PL/SQL 单元,例如一个‘CREATE PROCEDURE’声明。

    加密的优点:

    1. 防止其他开发人员滥用你的应用或者商业竞争者偷看你的逻辑。

    2. 加密后即使通过USER_SOURCE、ALL_SOURCE或者DBA_SOURCE数据字典看不见源代码 。

    3. SQL*PLUS可以处理加密后的程序。

    4. 导入导出工具也支持加密代码,你可以备份或者移动已经加密的存储过程。

    对加密的一些提示:

    1. 当加密一个包或者对象类型,只加密包体不加密声明。这就允许开发人员看见将要使用的包或类型的声明,但是看不到实现。

    2. 加密后的源码不可以编辑,如果要修改可以编辑源代码,然后再加密。你也可以推迟加密操作到源代码最终被应用。

    3. 为了确保所有重要的源代码都被加密,最好加密后在编辑器中查看确认。

    加密方法的局限性:

    1. 虽然加密帮助隐藏源程序的逻辑并且使解密变的异常困难,Oracle并不推荐使用该方法加密用户密码和表名。

    加密PL/SQL代码不能绝对阻止一切试图查看源代码的操作。

    2. 加密不支持触发器,为了隐藏一个触发器的工作,我们可以写一个one-line触发器来调用已经加密的存储过程。

    3. 加密的过程并不会去检查PL/SQL代码中的语法或者语义上的错误,例如表或视图不存在。这些错误只有在编译或执行的时候才会检查被发现。

    4. 被加密的PL/SQL程序不能导入到低版本的数据库中,Oracle支持是向上兼容,不支持向下兼容。例如,你能装载在V8.15上加密过的文件到

    V8.16,但是反过来就不行!

    5. 由于源代码是PL/SQL编译器解析,而不是SQL*PLUS,,所以要使用wrap工具加密的PL/SQL代码中不能使用SQL*PLUS符号声明的替代变量。

    6. 绝大多数的注释将在加密的文件中去处。See .

    7.如果调用DBMS_SQL.PARSE方法解析已通过DBMS_DDL.WRAP加密的PL/SQL单元时遇到语句使用了超过32767的VARCHAR2文本类型 ,需要设置LFFLG参数为

    FALSE。否则DBMS_SQL.PARSE往加密的单元中新增行将会破坏程序单元!

    二、使用WRAP工具加密PL/SQL代码:

    wrap工具介绍:

    1.warp只处理PL/SQL块,不会处理匿名块或者触发器或者非PL/SQL块。

    2. 语法如下:

    wrap iname=input_file [Oname=output_file] 注:等号左右不能有空格

    input_file 是包含SQL语句的文件名,扩展名不写默认为.sql,也可以使用其他扩展格式:

    例如:

    wrap iname=/mydir/myfile
    wrap iname=/mydir/myfile.sql
    wrap iname=/mydir/myfile.src

    output_file 是加密后生成的文件名,扩展名为.pld。也可以使用其他扩展格式:

    例如:

    wrap iname=/mydir/myfile.sql Oname=/mydir/myfile.plb

    wrap iname=/mydir/myfile Oname=/yourdir/yourfile.out

    wrap使用案例:

    For example, assume that the wrap_test.sql file contains the following:

  • SQL> conn hr/hr
  • 已连接。
  • SQL> conn hr/hr 已连接。 PL/SQL 过程已成功完成。

    加密过程如下:

    1. 保存wraptest.sql文件到d盘根目录:

    2.命令行中输入以下语句:

    三、使用DBMS_DDL子程序加密PL/SQL代码:

    DBMS_DDL子程序介绍:

    dbms_dll包含WRAP函数和CREATE_WRAPPED存储过程来加密单独的PL/SQL块,如包声明,包体,函数,存储过程,类型声明或者类型体。这些重载的子程序提供加密动态生成的PL/SQL块的机制。

    DBMS_DDL子程序使用案例:

    声明以下语句,并调用DBMS_DDL进行加密:

    查看USER_SOURCE中 emp_actions包的源代码是否加密:

    ...............

    ---------------------------------------------------

    made by dylan.


    推荐阅读
    • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
    • OCI连接MySQL_PLSQL Developer连接远程数据库OCI客户端安装方法
      本文介绍了使用OCI客户端连接MySQL和PLSQL Developer连接远程数据库的安装方法,避免了在本地安装Oracle数据库或类似的开发套件的麻烦,同时解决了PLSQL Dev连接远程Oracle时的配置问题。 ... [详细]
    • 如何实现织梦DedeCms全站伪静态
      本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
    • 如何使用迅捷PDF编辑器给PDF文件设置全屏动画
      本文介绍了使用迅捷PDF编辑器给PDF文件设置全屏动画的方法,包括安装软件、添加PDF文件、设置动画效果和页面范围等步骤,帮助用户实现PDF文件的全屏动画效果。操作简单,适用于华为全屏等设备。 ... [详细]
    • PDF内容编辑的两种小方法,你知道怎么操作吗?
      本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
    • 本文讨论了在PHP中将空格转换为问号的问题,并提供了解决方案。文章指出,空格不是标准的空格,而是特殊的0xC2 0xA0字符。作者尝试使用mb_convert_encoding函数将utf8字符串转换为gbk编码,但未成功。文章建议检查编辑器是否对空格进行了特殊处理,并提供了使用base64_encode函数打印结果的方法。最后,给出了完整的代码示例。 ... [详细]
    • 本文详细介绍了Vim编辑器中的三种模式(命令模式、末行模式和编辑模式)以及它们之间的操作区别和切换方法。Vim编辑器凭借其多种命令快捷键和高效率的操作方式,得到了广大厂商和用户的认可。对于想要高效操作文本的用户来说,了解这些模式的使用方法是必不可少的。 ... [详细]
    • 本文介绍了三种方法来关闭win7电脑开机硬盘自检,分别是使用命令提示符、注册表编辑器和bios设置界面。通过取消硬盘自检可以加快电脑启动速度。详细步骤和操作说明在正文中有详细介绍。 ... [详细]
    • Win7系统如何实现Ctrl+Alt+Del热键组合呼出任务管理器
      本文介绍了在Win7系统中如何通过组策略编辑器设置,实现Ctrl+Alt+Del热键组合呼出任务管理器的方法。通过删除原有的项目并设置呼出任务管理器,用户可以方便地使用Ctrl+Alt+Del热键组合来打开任务管理器。 ... [详细]
    • OC渲染器和阿诺德渲染器的特点及适用范围
      本文介绍了C4D软件自带的渲染器效果较差的问题,并推荐了四款C4D渲染器,其中包括OC渲染器和阿诺德渲染器。OC渲染器渲染速度快,简单易用,特别适合小团队和个人使用,而阿诺德渲染器具有超快的预览功能和真实的渲染效果,适合在体积光处理方面使用。两款渲染器都支持多个C4D版本和不同操作系统。 ... [详细]
    • 如何实现JDK版本的切换功能,解决开发环境冲突问题
      本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
    • 如何更改电脑系统的自动校时服务器地址?
      本文介绍了如何通过注册表编辑器更改电脑系统的自动校时服务器地址。通过修改注册表中的数值数据或新建字符串数值的方式,可以将默认的时钟同步服务器地址更改为自己所需要的域名或IP地址。详细步骤包括双击时间区域,点击internet时间,勾选自动校正域名设置定时等操作。 ... [详细]
    • 使用chrome编辑器实现网页截图功能的方法
      本文介绍了在chrome浏览器中使用编辑器实现网页截图功能的方法。通过在地址栏中输入特定命令,打开控制台并调用命令面板,用户可以方便地进行网页截图操作。 ... [详细]
    • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
      本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
    • 本文介绍了Windows Vista操作系统中的用户账户保护功能,该功能是为了增强系统的安全性而设计的。通过对Vista测试版的体验,可以看到系统在安全性方面的进步。该功能的引入,为用户的账户安全提供了更好的保障。 ... [详细]
    author-avatar
    mobiledu2502880051
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有