服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Oracle - 项目适 Oracle改造及SSL安全性配置问题汇总详解

项目适 Oracle改造及SSL安全性配置问题汇总详解

2022-11-14 16:25毕小宝 Oracle

这篇文章主要为大家介绍了项目适 Oracle改造及SSL安全性配置问题汇总详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

背景

项目开发初期使用 MySQL ,后期需要适配 Oracle ,总结适配过程及多数据库支持时,从开发初期就需要考虑的几点。

另外,总结几点最近半年开发过程中的技术问题。坑都填了,也该是时候记录一下填坑的经过了,要不然下次可能还会踏入同一个坑。

Oracle 适配点

  • 表名称长度限制,支持 Oracle 12C 以下是需要考虑 30个字符的限制。
  • Oracle 关键字 USER 不能乱用做别名.跟 MySQL 不一样,Oracle 有一张特殊的用户表名称就是 USER
  • Oracle 没有默认转义符号,支持模糊查询时,需要手动编写查询语句指定 ESCAPE 字符。这点 MyBatisPlus 插件的模糊查询爱莫能助,所以还是需要自定义模糊查询 SQL。好在 MySQL 和 Oracle 的 ESCAPE 语法是是一样的,可以统一。此外字符串连接函数 CONCAT 也应该以 Oracle 为主,只能有两个参数。
  • Oracle 的字段长度,一个中文的长度是2,这点与 MySQL 不一样。可变长度、允许输入中文的字段,都需要自动扩大到 MySQL 的 2 倍长。
  • Oracle 的 null 值插入或者更新时的异常问题,可以通过 MyBatisPlus 的全局配置 jdbc-type-for-null: 'null' 统一解决。
  • Oracle 区分大小写的,SQL 语法中注意小写是否真的是小写,如果是,需要加引号转义。
  • MySQL 的 text 或者 LongText 字段,对应 NCLOB VS VARCHAR(4000),有些特殊字段需要超长字符的,有个四千的边界,超过就需要用 NCLOB 类型。

其他低级错误

有些低级错误,比如:

  • yml 配置冒号后面要有空格,特殊字符用单引号。
  • IDEA 将普通 Java 工程导出可执行 jar 的时候,MANTIFET 清单文件生成的目录必须放在 src 下面,否则打包生成的文件执行时找不到主类。
  • 迭代器遍历的正确用法是 while(it.hasNext) 而非 if ,后者只会执行一次。再次印证了一句经验:不要相信拷贝来的代码,除非经过了你的测试。
  • 精度丢失问题,一个简单的计算指定周期的时间戳的代码,未考虑精度问题而溢出:
?
1
2
3
4
5
6
7
8
9
10
11
12
long result = 0;
switch (type){
case "year":
 result = time*365*24*60*60*1000;
  break;
case "month":
  result = time*30*24*60*60*1000;
  break;
case "day":
  result = time*24*60*60*1000;
  break;
  }

这个简单的根据时间单位类型,计算间隔的时间戳的代码, time 类型传入了 int ,结果几个纯数值默认 int 相乘后,单位为 year 结果溢出为负数了。

这是一个计算密码锁定时间的功能,锁定时间算出为负了,当密码正确时自动判断是否继续锁定时,当前时间 > (锁定开始时间+锁定时常)直接解锁了。

这个错误虽然低级,但是却测不出来,只有脑回路清奇的测试把密码锁定策略的锁定周期设置为年时才会显现。

高级问题

Web 项目安全扫描,https 支持的过程中,默认的 ssl 配置被扫到了不安全的密码套件和密钥长度过短的问题。Spring Boot 项目配置 SSL ,在目标服务器配置后 ciphers 密码套件后,访问不成功,总结一下这个过程。

相关的 SSL 配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
ssl:
    enabled: false
    key-store: file:xxx.jks
    key-store-type: JKS
    key-alias: xxx
    key-store-password: xxx
    # 配置证书版本,默认是 TLS1.0
    protocol: TLS
    # 设置SSL版本,默认是 TLS1.0
    enabled-protocols: TLSv1.2
    # 密钥套件算法,剔除不安全的算法
    ciphers: TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

需要注意的是,ciphers 参数中的密码算法对 JDK 版本有要求,较低的1.8 小版本是不支持的。

工具思维

有一台服务器的 SFTP 服务配置连接时间很短,由于网络问题,FTP 客户端总是没法在30秒内完成连接。但是碰到需要上传文件的时候,怎么办呢?

找别人上传了两次之后,总不能每次都找别人帮忙上传吧。试了下 Java 的 FTP 上传工具类,jsch 竟然能成功上传。一个简单的工具类,就成了缩减版的 FTP 工具了。

开发启示录

启示一,协同开发过程中,如果你看到了确实是问题的异常,抛在开发沟通群里,不能指望真正负责这个模块的人会主动解决这个问题。最好的方法是 @他 并明确告诉他有问题。否则,下次这个问题复现的时候,还是会再次面对的。

启示二,再次反思,拷贝代码要测试。

以上就是项目适 Oracle改造及SSL安全性配置问题汇总详解的详细内容,更多关于Oracle改造SSL安全适配的资料请关注服务器之家其它相关文章!

原文链接:https://juejin.cn/post/7148760174340587534

延伸 · 阅读

精彩推荐
  • OraclePDO取Oracle lob大字段,当数据量太大无法取出的问题的解决办法

    PDO取Oracle lob大字段,当数据量太大无法取出的问题的解决办法

    最近,做sns的项目,用PDO连接Oracle数据库,读取Clob字段,当数据量非常大的时候(上万个字符),返回空值,从网上也没有查到相关的资料。自己刻苦研究...

    Oracle教程网2832019-10-30
  • OracleOracle Portal及其门户网站开发概述

    Oracle Portal及其门户网站开发概述

    Portal是IT领域的新技术,是企业信息化工作的发展方向之一。本文首先介绍了Oracle Portal的定义、特点,接着阐述了portal的体系结构。随后本文介绍了Oracle...

    Oracle教程网3142019-10-26
  • OracleOracle数据库中表空间的基本管理操作小结

    Oracle数据库中表空间的基本管理操作小结

    这篇文章主要介绍了Oracle数据库中表空间的基本管理方法小结,包括创建表空间和获取表空间大小等的操作命令,需要的朋友可以参考下 ...

    SmartMZ5062019-12-25
  • OracleOracle基础学习之子查询

    Oracle基础学习之子查询

    所谓子查询就是当一个查询的结果是另一个查询的条件时,称之为子查询。本文给大家详细的介绍了关于Oracle中子查询的相关知识,文中的内容也算是自己...

    Maystory凡2242020-01-02
  • OraclePLSQLDeveloper登录远程连接Oracle的操作

    PLSQLDeveloper登录远程连接Oracle的操作

    这篇文章主要介绍了PLSQLDeveloper登录远程连接Oracle的操作方法,通过图文并茂给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的...

    乘风晓栈10392021-09-28
  • OracleOracle关于重建索引争论的总结

    Oracle关于重建索引争论的总结

    这篇文章主要介绍了Oracle关于重建索引争论的总结,本文总结了重建索引的理由、重建索引的本质、反对重建索引的理由等内容,需要的朋友可以参考下 ...

    JUNJIE1972019-12-16
  • OracleOracle数据库数据丢失恢复的几种方法总结

    Oracle数据库数据丢失恢复的几种方法总结

    相信大家无论是开发、测试还是运维过程中,都可能会因为误操作、连错数据库、用错用户、语句条件有误等原因,导致错误删除、错误更新等问题。当你...

    daisy2932020-01-03
  • OracleOracle 安装和卸载问题收集(集合篇)

    Oracle 安装和卸载问题收集(集合篇)

    在安装过程中出现的一些问题的解决办法。值得收藏与学习。比如在安装的时候如果有中文的路径则会出现类似这样的提示:加载数据库时出错:areasQuerie...

    Oracle教程网5302019-11-04