作为一款Oracle数据安全增强产品,其中不可避免的需要对Oracle内部数据进行操作,其中主要是对Oracle里需要保护的数据进行加密处
引言
数据库保险箱(简称DBCoffer) 是一款基于Oracle扩展机制实现的,数据高度安全、应用完全透明、密文高效访问的Oracle数据安全增强产品。DBCoffer可以防止绕过防火墙的外部数据攻击、来自于内部的高权限用户的数据窃取、以及由于磁盘、磁带失窃等引起的数据泄密。
作为一款Oracle数据安全增强产品,其中不可避免的需要对Oracle内部数据进行操作,其中主要是对Oracle里需要保护的数据进行加密处理,但因为DBCoffer是Oracle外部实现对数据的保护处理后,然后再次导进数据库,其中涉及数据的出与进,就会有字符集兼容及字符集转换等相关问题产生,遇到相关问题时,如何才能从容应对,这就要求开发者及测试者具有一定的Oracle字符集知识基础,下面就以字符集的一些相关知识原理为切入点,然后从后面的问题中一步一步深入探讨。
1 Oracle字符集简介
Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。
影响Oracle数据库字符集最重要的参数是NLS_LANG参数。它的格式如下:
NLS_LANG =language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中: Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK
从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。当用“select userenv('language') from dual” 语句进行查询时,数据库服务端返回“language_territory.charset” 的结构,则charset对应为当前连接数据库字符集,而此查询结果也可以作为配置客户端字符集的依据。
在数据存储方面,不得不提两个概念:数据库字符集和国家字符集。在安装Oracle时,可以指定数据库字符集和国家字符集,其作用是用本国语言和格式来存储、处理和检索数据,如用来存储CHAR, VARCHAR2, CLOB, LONG等类型数据。国家字符集实质上是为Oracle选择的附加字符集,主要作用是为了增强Oracle的字符处理能力,因为NCHAR数据类型可以提供对亚洲使用定长多字节编码的支持,只能在unicode编码中的AF16UTF16和UTF8中选择,用以存储NCHAR, NVARCHAR2, NCLOB等类型数据,默认值是AF16UTF16。
由于oracle字符集种类多,且在存储、检索、迁移oracle数据时多个环节与字符集的设置密切相关,因此在实际的应用中,数据库开发和管理人员经常会遇到有关Oracle字符集方面的问题。
2 Oracle常用字符集原理剖析
在最初的数据库统中,字符集只有一种ASCII,由于ASCII支持的字符很有限,因此随后又出现了很多的编码方案,这些编码方案大部分都是包括了ASCII,下面要谈到的Oracle字符集US7ASCII就是一个7位的ASCII字符集。当然要理清Oracle所有的字符集不是件容易的事,下面就从一些当前较常用的Oracle字符集编码进行简单说明。
2.1 单字节编码
单字节7位字符集,可以定义128个字符,最常用的字符集为 US7ASCII.
单字节8位字符集,可以定义256个字符,适合于欧洲大部分国家,例如:WE8ISO8859P1(西欧、8位、ISO标准8859P1编码 )
2.2 多字节编码
变长多字节编码,某些字符用一个字节表示,其它字符用两个或多个字符表示,变长多字节编码常用于对亚洲语言的支持,例如日语、汉语、印地语等,例如:AL32UTF8(其中AL代表ALL,指适用于所有语言)、 ZHS16GBK231280。
定长多字节编码,每一个字符都使用固定长度字节的编码方案,目前Oracle唯一支持的定长多字节编码是AF16UTF16,也是仅用于国家字符集。
2.3 Unicode编码
Unicode是一个涵盖了目前全世界使用的所有已知字符的单一编码方案,也就是说Unicode为每一个字符提供唯一的编码。UTF-16是Unicode的16位编码方式,是一种定长多字节编码,用2个字节表示一个Unicode字符,AF16UTF16是UTF-16编码字符集。UTF-8 是Unicode的8位编码方式,是一种变长多字节编码,这种编码可以用1、2、3个字节表示一个Unicode字符,AL32UTF8,UTF8、UTFE是UTF-8编码字符集。
当一种字符集(字符集A)的编码数值包含另一种字符集(字符集B)的全部编码数值,并且两种字符集相同编码数值代表相同的字符时,则字符集A是字符集B的超级,或称字符集B是字符集A的子集。由于US7ASCII是最早的Oracle数据库编码格式,因此有许多字符集是US7ASCII的超集,例如WE8ISO8859P1、ZHS16CGB231280、ZHS16GBK,Oracle内部字符集的转换只保证是由子集到超集的转换正常。
3 DBCoffer与Oracle的通信架构分析
有了上面字符集的基础知识后,再来谈DBCoffer的与Oracle的通信架构图,相信能够很快让你看懂图中有哪些地方涉及字符集的转换,如下图所示:应用程序与Oracle客户端、外部库与Oracle服务端、Oracle客户端与Oracle服务端、Oracle服务端与Exp导出及Imp导入与Oracle服务端,这里提到的点都是Oracle服务端直接通信且可能发生字符集。在DBCoffer下,主要是通过调用外部库,直接与DBCSecureService进行通信,从而对数据进行处理后再送回数据库,当然这仅仅是整个DBCoffer的冰山一角,下面我们就从通信两端字符一致与不一致情况来分别讨论可能发生的情况。
图 1
3.1 字符集一致时情况分析
相信大家都知道,在Oracle客户端与服务端之间,如果两端字符集一致是不会有字符集转换的,即在客户端输进去的是什么,那么数据库存储是就是什么,这就是为什么7位US7ASCII、8位WE8ISO8859P1及UTF8字符集类型时,对于中文数据支持也是相当的不错,但是用这些字符集来处理中文时,相应的客户端程序开发与维护难度也会增加不少,且乱码产生的可能性也比ZHS16GBK要高出不少。下面来看一个例子:JAVA THIN连接字符集为WE8ISO8859P1的Oracle数据库。
首先对于JAVA THIN连接,也可以看成是Oracle的一种客户端,至于这个“客户端”所采用的字符集,通常是以JAVA默认字符集为参考。经过实验,当用JAVA THIN方式连接Oracle时,当服务端字符集为ZHS16GBK和UTF8时,对于DML语句的执行和结果集的显示,是不用进行相关字符集的转换操作,而当Oracle数据库字符集为WE8ISO8859P1时,问题就来了,对于需要执行的SQL语句,尤其是包含中文数据的SQL语句必须要先进行一个转码过程,转码函数参考如下:

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템으로, 주로 데이터를 신속하고 안정적으로 저장하고 검색하는 데 사용됩니다. 작업 원칙에는 클라이언트 요청, 쿼리 해상도, 쿼리 실행 및 반환 결과가 포함됩니다. 사용의 예로는 테이블 작성, 데이터 삽입 및 쿼리 및 조인 작업과 같은 고급 기능이 포함됩니다. 일반적인 오류에는 SQL 구문, 데이터 유형 및 권한이 포함되며 최적화 제안에는 인덱스 사용, 최적화 된 쿼리 및 테이블 분할이 포함됩니다.

MySQL은 데이터 저장, 관리, 쿼리 및 보안에 적합한 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1. 다양한 운영 체제를 지원하며 웹 응용 프로그램 및 기타 필드에서 널리 사용됩니다. 2. 클라이언트-서버 아키텍처 및 다양한 스토리지 엔진을 통해 MySQL은 데이터를 효율적으로 처리합니다. 3. 기본 사용에는 데이터베이스 및 테이블 작성, 데이터 삽입, 쿼리 및 업데이트가 포함됩니다. 4. 고급 사용에는 복잡한 쿼리 및 저장 프로 시저가 포함됩니다. 5. 설명 진술을 통해 일반적인 오류를 디버깅 할 수 있습니다. 6. 성능 최적화에는 인덱스의 합리적인 사용 및 최적화 된 쿼리 문이 포함됩니다.

MySQL은 성능, 신뢰성, 사용 편의성 및 커뮤니티 지원을 위해 선택됩니다. 1.MYSQL은 효율적인 데이터 저장 및 검색 기능을 제공하여 여러 데이터 유형 및 고급 쿼리 작업을 지원합니다. 2. 고객-서버 아키텍처 및 다중 스토리지 엔진을 채택하여 트랜잭션 및 쿼리 최적화를 지원합니다. 3. 사용하기 쉽고 다양한 운영 체제 및 프로그래밍 언어를 지원합니다. 4. 강력한 지역 사회 지원을 받고 풍부한 자원과 솔루션을 제공합니다.

InnoDB의 잠금 장치에는 공유 잠금 장치, 독점 잠금, 의도 잠금 장치, 레코드 잠금, 갭 잠금 및 다음 키 잠금 장치가 포함됩니다. 1. 공유 잠금을 사용하면 다른 트랜잭션을 읽지 않고 트랜잭션이 데이터를 읽을 수 있습니다. 2. 독점 잠금은 다른 트랜잭션이 데이터를 읽고 수정하는 것을 방지합니다. 3. 의도 잠금은 잠금 효율을 최적화합니다. 4. 레코드 잠금 잠금 인덱스 레코드. 5. 갭 잠금 잠금 장치 색인 기록 간격. 6. 다음 키 잠금은 데이터 일관성을 보장하기 위해 레코드 잠금과 갭 잠금의 조합입니다.

MySQL 쿼리 성능이 좋지 않은 주된 이유는 인덱스 사용, 쿼리 최적화에 의한 잘못된 실행 계획 선택, 불합리한 테이블 디자인, 과도한 데이터 볼륨 및 잠금 경쟁이 포함됩니다. 1. 색인이 느리게 쿼리를 일으키지 않으며 인덱스를 추가하면 성능이 크게 향상 될 수 있습니다. 2. 설명 명령을 사용하여 쿼리 계획을 분석하고 Optimizer 오류를 찾으십시오. 3. 테이블 구조를 재구성하고 결합 조건을 최적화하면 테이블 설계 문제가 향상 될 수 있습니다. 4. 데이터 볼륨이 크면 분할 및 테이블 디비전 전략이 채택됩니다. 5. 높은 동시성 환경에서 거래 및 잠금 전략을 최적화하면 잠금 경쟁이 줄어들 수 있습니다.

데이터베이스 최적화에서 쿼리 요구 사항에 따라 인덱싱 전략을 선택해야합니다. 1. 쿼리에 여러 열이 포함되고 조건 순서가 수정되면 복합 인덱스를 사용하십시오. 2. 쿼리에 여러 열이 포함되어 있지만 조건 순서가 고정되지 않은 경우 여러 단일 열 인덱스를 사용하십시오. 복합 인덱스는 다중 열 쿼리를 최적화하는 데 적합한 반면 단일 열 인덱스는 단일 열 쿼리에 적합합니다.

MySQL 느린 쿼리를 최적화하려면 SlowQueryLog 및 Performance_Schema를 사용해야합니다. 1. SlowQueryLog 및 Set Stresholds를 사용하여 느린 쿼리를 기록합니다. 2. Performance_schema를 사용하여 쿼리 실행 세부 정보를 분석하고 성능 병목 현상을 찾고 최적화하십시오.

MySQL 및 SQL은 개발자에게 필수적인 기술입니다. 1.MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템이며 SQL은 데이터베이스를 관리하고 작동하는 데 사용되는 표준 언어입니다. 2.MYSQL은 효율적인 데이터 저장 및 검색 기능을 통해 여러 스토리지 엔진을 지원하며 SQL은 간단한 문을 통해 복잡한 데이터 작업을 완료합니다. 3. 사용의 예에는 기본 쿼리 및 조건 별 필터링 및 정렬과 같은 고급 쿼리가 포함됩니다. 4. 일반적인 오류에는 구문 오류 및 성능 문제가 포함되며 SQL 문을 확인하고 설명 명령을 사용하여 최적화 할 수 있습니다. 5. 성능 최적화 기술에는 인덱스 사용, 전체 테이블 스캔 피하기, 조인 작업 최적화 및 코드 가독성 향상이 포함됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.
