一个容易忽视的Oracle数据安全问题

数据库安全问题一直是人们关注的焦点之一,我们知道一个企业或者机构的数据库如果遭到黑客的攻击,而这些数据库又保存着非常重要的数据,象银行、通信等数据库,后果将不堪设想。Oracle数据库使用了多种手段来保证数据库的安全性,如密码,角色,权限等等。

作为Oracle的数据库管理员都知道,数据库系统典型安装后,一般sys和system以及internal这三个用户具有默认的口令,数据库安装成功后,系统管理员作的第一件工作就是修改这些用户的口令,保证数据库的安全性。然而,众多管理员往往忽视了其中的一个安全问题,下面我们就将详细讨论这个问题。

Oracle数据库系统如果采用典型安装后,除了创建前面介绍的几个用户外,另外还自动创建了一个叫做DBSNMP的用户,该用户负责运行Oracle系统的智能代理(Intelligent Agent),该用户的缺省密码也是“DBSNMP”。如果忘记修改该用户的口令,任何人都可以通过该用户存取数据库系统。现在我们来看一下该用户具有哪些权限和角色,然后来分析一下该用户对数据库系统可能造成的损失。

启动SQL/PLUS程序,使用该用户登录进入:

SQL> select * from session_privs;
CREATE SESSION
ALTER SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SYNONYM
CREATE PUBLIC SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE DATABASE LINK
CREATE PROCEDURE
CREATE TRIGGER
ANALYZE ANY
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE


可以看到该用户不是SYS或SYSTEM管理用户,然而,它却具有两个系统级权限:UNLIMITED TABLESPACE和CREATE PUBLIC SYNONYM。

看到这两个权限你应该马上想到,这些都是安全隐患,尤其是UNLIMITED TABLESPACE,它是破坏数据库系统的攻击点之一。如果这时候你还依然认为,即使有人利用这个没有修改的口令登录进数据库也造成不了什么损失的话,我就不得不提醒你:该用户具有UNLIMITED TABLESPACE的系统权限,它可以写一个小的脚本,然后恶意将系统用垃圾数据填满,这样数据库系统也就无法运行,并将直接导致最终的瘫痪。目前很多数据库系统都要求7X24的工作,如果出现了系统用垃圾数据填满的情况,那么,等数据库系统恢复时,恐怕不可挽回的损失已经造成了。

为了保证Oracle数据库系统运行的绝对安全,强烈建议数据库管理员修改该用户的默认口令,不要为不怀好意的人留下“方便之门”。

时间: 2024-12-30 02:57:15

一个容易忽视的Oracle数据安全问题的相关文章

一个容易忽视的Oracle安全问题

oracle|安全|问题 数据库安全问题一直是人们关注的焦点之一,我们知道一个企业或者机构的数据库如果遭到黑客的攻击,而这些数据库又保存着非常重要的数据,象银行.通信等数据库,后果将不堪设想.Oracle数据库使用了多种手段来保证数据库的安全性,如密码,角色,权限等等. 作为Oracle的数据库管理员都知道,数据库系统典型安装后,一般sys和system以及internal这三个用户具有默认的口令,数据库安装成功后,系统管理员作的第一件工作就是修改这些用户的口令,保证数据库的安全性.然而,众多管

如何查看Oracle数据表的建表语句

oracle|数据|语句 如何查看Oracle数据表的建表语句? 系统环境:  1.操作系统:Windows 2000 Server,机器内存128M 2.数据库: Oracle 8i R2 (8.1.6) for NT 企业版 3.安装路径:C:\ORACLE 实现步骤:  1.用EXP工具导出 2.导入时使用show=y选项.log选项 3.查看.编辑日志文件 具体实例:  1.调出SQL*Plus conn system/manager grant connect,resource to

Oracle数据操作和控制语言详解

oracle|控制|数据|详解 插入数据    INSERT语句常常用于向表中插入行,行中可以有特殊数据字段,或者可以用子查询从已存在的数据中建立新行.    列目录是可选的,缺省的列的目录是所有的列名,包括comlumn_id,comlumn_id可以在数据字典视图ALL_TAB_COLUMNS,USER_TAB_COLUMNS,或者DBA_TAB_COLUMNS中找到.    插入行的数据的数量和数据类型必须和列的数量和数据类型相匹配.不符合列定义的数据类型将对插入值实行隐式数据转换.NUL

Oracle数据操作和控制语言详解 (一)

oracle|控制|数据|详解 SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL.其中用于定义数据的结构,比如 创建.修改或者删除数据库:DCL用于定义数据库用户的权限:在这篇文章中我将详细讲述这两种语言在Oracle中的使用方法. DML语言 DML是SQL的一个子集,主要用于修改数据,下表列出了ORACLE支持的DML语句. 语句 用途 INSERT 向表中添加行 UPDATE 更新存储在表中的数据 DELETE 删除行 SELECT

如何查看Oracle数据表的建表语句?

oracle|数据|语句 如何查看Oracle数据表的建表语句? 系统环境:  1.操作系统:Windows 2000 Server,机器内存128M 2.数据库: Oracle 8i R2 (8.1.6) for NT 企业版 3.安装路径:C:\ORACLE 实现步骤:  1.用EXP工具导出 2.导入时使用show=y选项.log选项 3.查看.编辑日志文件 具体实例:  1.调出SQL*Plus conn system/manager grant connect,resource to 

Oracle数据操作和控制语言详解(二)

oracle|控制|数据|详解 事务控制 事务控制包括协调对相同数据的多个同步的访问.当一个用户改变了另一个用户正在使用的数据时,oracle使用事务控制谁可以操作数据. 事务 事务表示工作的一个基本单元,是一系列作为一个单元被成功或不成功操作的SQL语句.在SQL和PL/SQL中有很多语句让程序员控制事务.程序员可以: 1.显式开始一个事物,选择语句级一致性或事务级一致性 2.设置撤销回滚点,并回滚到回滚点 3.完成事务永远改变数据或者放弃修改. 事务控制语句 语句 用途 Commit 完成事

Oracle数据操作和控制语言详解(三)

oracle|控制|数据|详解 建立和修改用户 CREATE USER 语句将建立一个用户.当一个用户连接到ORACLE数据库时,它必须被验证.ORACLE中验证有三种类型: Database external Global 缺省是数据库验证,当用户连接到数据库时,oracle将检测用户是否是数据库的合法用户,并且要提供正确的password.external验证,oracle将只检测用户是否是合法用户,password已经被网络或系统验证了.global验证也是只检测是否是合法用户,passw

为ASP.NET应用缓存Oracle数据

asp.net|oracle|缓存|数据 为了创建可扩展.高性能的基于WEB的应用,ASP.NET提供一个称为数据缓存(Data Caching)的特性.数据缓存支持将频繁访问的数据对象可编程地存放在内存中.这一特性可扩展以广泛地提高查询Oracle数据库中数据的ASP.NET应用的性能.本文讲述一个策略,可用于采用Web Farm环境中的ASP.NET Web应用缓存Oracle数据库数据.这个技巧允许在内存中缓存频繁访问的Oracle数据库数据,而不是频繁访问数据库来取数据.这可以帮助避免到

用Oracle数据表绑定DataGrid

datagrid|oracle|数据 累啊,终于找到了如何将数据表绑定到DateGrid的方法了.不过这次犯了经验主义错误,一开始就是去Google找的,找了半天没找到,后来还是在CSDN社区上找到了.呵呵,笨啊.这是Oracle版的. private void button1_Click(object sender, System.EventArgs e){ string ConnectionString="Data Source=sky;user=diamond;password=diamo