动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库学院 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息



本月文章推荐
.在Oracle 8x中实现自动断开后再连.
.ORACLE数据库备份方法.
.Oracle9i初始化参数中文说明(11).
.在sqlplus中操作blob和clob.
.Oracle中捕获问题SQL解决CPU过渡.
.用ODP.NET执行SQL读取数据库记录.
.内部错误,hostdef扩展名不存在.
.Oracle 的一些基本知识,应该知道.
.Oracle在Linux操作系统下安装小结.
.Oracle Database 10g 中新特性.
.ORACLE 回滚段表空间数据文件丢失.
.ORACLE问题,每天10问(十).
.Oracle数据库回滚段表空间文件丢.
.Oracle8i和MS SQL Ser.
.oracle中对db的不同命名方式.
.Oracle经验技巧集.
.如何查看各个表空间占用磁盘情况.
.Oracle 10g + SQL SERVER 2000 透.
.TestKing Oracle 1z0-020 V5.
.VB6使用OracleDataControl访问Or.

一个生成Oracle用户密码的通用小程序

发表日期:2008-2-9 |


    做为Unix 系统治理员,Oracle 数据库治理员,Oracle ERP 应用系统治理员,需要不定期地更改各系统中重要用户的密码,以保证系统及数据的安全。 
   但是,由于所治理的小型机及数据库、应用系统较多,每月更改近百个用户的密码,不论是密码的生成,还是密码的更改,工作量均很大,尤其是密码的生成,为了加强安全性,密码不能太简单,最好为字母与数字的随机组合。但大量的密码,若不借助自动生成,则其编排是Oracle ERP 系统中应用系统用户(指各子系统的用户,非指具体应用用户)同时也是Oracle 数据库用户(如应收模块,用户为 AR,AR既是数据库用户,又是应用用户),而且,只有 applsyspub(登录系统的公用用户),applsys(应用基础用户),apps(具体应用操作用户)为必须为应用系统中密码与数据库密码一致外,其它应用的数据库用户密码可以与应用系统中密码中不一致,只需在对应用系统进行打 patch 工作时才需将其改为一致。因而,可在打 patch 前,在应用系统中将应用系统用户密码修改为与数据库一致即可,平时不用修改其密码,这样一则减少了工作量,二则加强了系统的安全性。 
   更改数据库用户密码可通过在 sqlplus 执行 alter user identified by 密码 的命令而实现,因而,可以通过自动生成密码脚本的方式,高效地完成密码的更改工作。而 Unix 用密码则由于需由治理员负责更改密码的并不多,故可在自动生成后,手工进行修改。 
   为了生成较为复杂的密码,同时提高工作效率,我用 Excel 自带的 VBA 编写了一个小脚本,运行该程序,则自动生成一个更改用户密码的脚本,同时,将用户密码记录在工作表上,以便于打印出来,保存在密码本中,做为记录。 首先,需在工作表中第一列输入各个要修改密码的数据库用户的用户名,在第三列输入各然后,运行脚本 gen_pass_oracle ,则自动生成Oracle 用户的相应的密码;运行脚本 gen_pass_unix ,则自动生成unix 操作系统用户的相应的密码。生成的Oracle 数据库用户密码保存在 change_pass.sql 中,可在 sqlplus 中调用该脚生成的Unix 用户密码保存在 change_pass.txt 中,需手工逐个地更改密码。 
   可通过在程序首部修改 pass_length 的值的方法,确定生成的密码的长度;可通过在程序首部修改 start_asc 的方法,确定密码的组成 0-9,A-Z还是仅 A-Z 其主要实现为:通过检查工作表中每一行第1列(或第3列)是否为空,判定是否结束密码生成工作。若非空,即有用户名,则进行循环,生成在程序头部定义的指定长度的密码串。密码串中的字符为通过起始字符的 ascii 值加上随机数产生的随机值得到的新的 ascii 值,再将其转换为字符型,并加入密码串中。当密码串的长度达到指定长度时,将其组合为一个 sql 语句写入文件中,同时,在该行的第2列(或第4列)中写入该密码串。 同时,考虑到在 Excel 中会将“=”开头的字符串当作公式对待,故,在生成密码串时,将等于"="的ascii 值过滤。用类似方法,可使生成的密码串中不包含其它不想包含的字符。
   通过使用这种方式,生成并修改密码的工作量得到大大减少,安全性得到提高。 
   实际上,这种方法产生的密码不限于 unix 与 Oracle, 可用于各种操作系统中重要用户
   Sub gen_pass_app() 
   Dim bit_count as integer ’循环变量, 密码中位数计数器 
   dim row_num as integer ’需生成密码的用户名信息开始的行号 
   dim rnd_base As Integer ’随机数种子 
   Dim char_value As Integer ’密码中每个字符的 ascii 值 
   Dim temp_str As String ’密码串 
   Dim username(50) As String ’用户名 
   dim pass_length as integer ’定义生成的密码的长度 
   dim start_asc as integer ’ 定义从哪个字符开始生成 
   pass_length = 8 ’ 设定密码长度为 8 位 
   Rem start_asc = 48 ’ 设定密码从 0 开始 
   start_asc = 65 ’ 设定密码从 A 开始 
   rem 由于 Oracle 数据库用户密码不区分大小写,故,视所选择的起始字母,决定随机数
   rnd_base = 90 - start_asc 
   ? 
   rem 打开文件,用于输出生成的改密码的脚本 
   Open "c:change_pass.sql" For Output As #1 
   rem 同时,在工作表上记录相应的密码,以便打印出来备作为记录,此处为先写标题 
   Cells(1, 1) = "Username": Cells(1, 2) = "PassWord" 
   Cells(1, 3) = "Username": Cells(1, 4) = "Password" 
   rem 先生成 apps 的密码,但脚本中加上注释,因 apps密码必须与应用程序一起改 
   rem 先初始化密码串为空白 
   temp_str = "" 
   For bit_count = 1 To pass_length 
   char_value = start_asc + Int(Rnd(1) * rnd_base) 
   rem 此处为为防=号引起 excel 误认为是公式,从而程序出错。
 
   If char_value = 61 Then 
   char_value = 62 
   End If 
   rem 组合成密码 
   temp_str = temp_str + Chr$(char_value) 
   Next bit_count 
   rem 将生成的 apps 密码输出到脚本文件 
   Print #1, "REM alter user apps" + " identified by " + temp_str + ";" 
   rem 同时,记录在工作表上 
   Cells(2, 3) = "APPS": Cells(2, 4) = temp_str 
   rem 需生成密码的用户名从 row_num 行开始 
   row_num = 2 
   rem 若第一列非空,则创建密码,否则退出   Do While Cells(row_num, 1) <> "" 
   temp_str = "" 
   For bit_count = 1 To pass_length 
   char_value = start_asc + Int(Rnd(1) * rnd_base) 
   If char_value = 61 Then 
   char_value = 62 
   End If 
   temp_str = temp_str + Chr$(char_value) 
   Next bit_count 
   Print #1, "alter user " + Cells(row_num, 1) + " identified by " + temp_str + 
   Cells(row_num, 2) = temp_str 
   rem 获取下一行 
   row_num = row_num + 1 
   Loop 
   rem 所有用户的密码已生成,关闭文件 
   Close #1 
   End Sub 
   ? 
   Sub gen_pass_unix() 
   Dim bit_count as integer ’循环变量, 密码中位数计数器 
   dim row_num as integer ’需生成密码的用户名信息开始的行号 
   dim rnd_base As Integer ’随机数种子 
   Dim char_value As Integer ’密码中每个字符的 ascii 值 
   Dim temp_str As String ’密码串 
   Dim username(50) As String ’用户名 
   dim pass_length as integer ’定义生成的密码的长度 
   dim start_asc as integer ’ 定义从哪个字符开始生成 
   pass_length = 8 
   start_asc = 48 ’ 0 
   Rem start_asc = 65 ’ A 
   rem 由于 unix 密码支持大小写,故,视所选择的起始字母,决定随机数的范围,以确保
   rnd_base = 122 - start_asc 
   ? 
   rem 打开文件,用于输出生成的改密码的脚本 
   Open "c:change_pass.txt" For Output As #1 

  rem 同时,在工作表上记录相应的密码,以便打印出来备作为记录,此处为先写标题 
   Cells(1, 3) = "Username": Cells(1, 4) = "Password" 
   row_num = 2 
   rem 若第三列非空,则创建密码,否则退出   Do While Cells(row_num, 3) <> "" 
   temp_str = "" 
   For bit_count = 1 To pass_length 
   char_value = start_asc + Int(Rnd(1) * rnd_base) 
  rem 91-94 为 [ ] ^ _ ` 
   rem 因不愿在unix 密码串中包含该类字符,故,通过减少已增大的计数器以保证密码的长度,同时,不将其计入密码串中,以排除它们 
   If (char_value >= 58 And char_value <= 64) Or (char_value >= 91 And char_value <= 96) Then 
   bit_count = bit_count - 1 
   Else 
   temp_str = temp_str + Chr$(char_value) 
   End If 
   Next bit_count 
   Print #1, "user " + Cells(row_num, 1) + " : " + temp_str 
   Cells(row_num, 4) = temp_str 
   rem 获取下一行 
   row_num = row_num + 1 
   Loop 
   rem 所有用户的密码已生成,关闭文件 
   Close #1 
   End Sub 

上一篇:关于触发器的问题 人气:428
下一篇:设置sql进行跟踪 人气:365
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-4 天空网络电影系统SKYUC v2.5.1 B
2008-7-4 PHPDug v2.0 多国语言版
2008-7-4 Drupal v7.x-dev Build 080704
2008-7-4 乐学LBBS无限级目录图片直读系统
2008-7-4 生成静态的美女小偷程序 v1.2
2008-7-4 顶级DJ舞曲网 v1.2 黑色正式版
2008-7-4 生活名片
2008-7-4 轩魂ASP中文验证码
2008-7-4 ip138手机归属地小偷
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 GoodCalculator2.0版固件计算器
2008-7-5 RepoName源地址搜索工具 v1.21b
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 TouchCopy多媒体管理软件 v3.13完
2008-7-5 VideosTone视频铃声 v1.1汉化破解
2008-7-5 TouchPad触摸板 v4.44破解版
2008-7-5 VideosTone破解补丁 v1.0
2008-7-5 Feeds GoogleReader客户端 v0.4.3


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報