知识大全 PB应用的数据库联接的安全防范[1]
Posted 数据库
篇首语:亦余心之所善兮,虽九死其犹未悔。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PB应用的数据库联接的安全防范[1]相关的知识,希望对你有一定的参考价值。
PB应用的数据库联接的安全防范[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在通常的Server/Client方式MIS开发中 由于程序要与数据库服务器保持联接 为了程序的灵活和扩充性 联接参数(用户ID和登录口令)又不能在程序中写死(其实写死也不是一种好的方法) 一般的方法无外乎有两种 其一是把联接参数存放在注册表中 其二就是直接读INI文件
本人找到一种方法 可以解决数据库应用的安全性问题 通过INI文件和数据库的巧妙处理 在程序中提供用户一种接口 可以随时修改数据库的联接参数 而又不给外人以蛛丝马迹 做到神不知鬼不觉
实现方法如下
创建INI文件 记录数据库联接的一些方便程序分发的参数DBMS SERVERNAME LOGID具体如下
//创建成INI文件(rsgl ini)
[Database]
DBMS=O ORACLE
ServerName=gxmistest //数据库服务器名
LogId=rsgl //实际的数据库登录用户
然后 在数据库中创建一个中间用户PUB 登录口令PUB 赋予PUB用户CONNECT RESOURCE权限 再在其中创建表CREATE TABLE TBL_PUB_PASSSHADOW (PASSSHADOW VARCHAR ( ) NOT NULL)用于存放实际的数据库联接的登录口令(当然要经过加密) 加密函数网上多的是 在此就不累述
我自已创建了一个字符串加密函数f_password(string old_str string new_str integer jm_mode) jm_mode参数用以区分函数的加(解)密 old_str new_str两参数分别为加(解)密的字符串
就开始编写应用程序了 在应用程序的OPEN事件中进行数据库登录联接 程序脚本如下
string ls_inifile ls_starttimes
string ls_logid ls_logpass ls_dbms
string ls_pass ls_sql ls_code ls_server
//设置INI文件
ls_inifile = rsgl ini
ls_server = ProfileString (ls_inifile database ServerName )
ls_logid = ProfileString (ls_inifile database LogId )
// Profile pub
SQLCA DBMS = ProfileString (ls_inifile database dbms )
SQLCA LogPass = pub
SQLCA ServerName = ls_server
SQLCA LogId = pub
SQLCA AutoCommit = False
SQLCA DBParm =
connect using sqlca;
//得到用户RSGL加过密的用户口令
select passshadow into:ls_pass from tbl_pub_passshadow;
//口令解密
ls_pass = f_password(ls_pass )
disconnect using sqlca;
//联接到实际的数据库用户RSGL
SQLCA ServerName = ls_server
sqlca DBMS = ProfileString (ls_inifile database Dbms )
SQLCA DBParm = ProfileString (ls_inifile database Dbparm )
sqlca database = ProfileString (ls_inifile database database )
sqlca userid = ProfileString (ls_inifile database userid )
sqlca dbpass = ProfileString (ls_inifile database dbpass )
sqlca logid = ls_logid
sqlca logpass = ls_pass//ProfileString (ls_inifile database LogPass )
SQLCA AutoCommit = False
connect using sqlca;
if sqlca sqldbcode <> then
choose case sqlca sqldbcode
case
MessageBox (string(sqlca SQLDBCode) 不能联接数据库 ~r错误 无效的用户名和口令 请与管理员联系! )
case
MessageBox (string(sqlca SQLDBCode) 不能联接数据库 ~r错误 服务器名不存在!请与系统管理员联系 )
case
MessageBox (string(sqlca SQLDBCode) 不能联接数据库 ~r错误 数据库不支持你当前的安装! )
case else
MessageBox (string(sqlca SQLDBCode) 不能联接数据库 ~r错误 + sqlca sqlerrtext)
end choose
halt close
else
open(w_gd_frame) //打开应用程序的主窗口
end if
接下来 就是编写一个用户接口 让授权用户随时修改数据库联接参数 窗口界面见下图 (文件名称 dblogon jpg) 窗口上面的控件有
cha138/Article/program/PB/201311/24610相关参考
PB开发Sybase数据库应用技巧点滴[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs
PB开发Sybase数据库应用技巧集锦[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs
在PB中应用AutoCAD图形数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! PowerB
PB开发Sybase数据库应用技巧点滴[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs
PB开发Sybase数据库应用技巧集锦[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs
PB中实现可监控的数据备份 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在众多的数据库应用开发
在PB中使用FoxPro数据库的方法[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一利用
PB内置Oracle数据库接口的使用方法[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! P
PB中数据窗口的多表更新[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 原理分析 数据窗
知识大全 PB中同时“继承”多个用户自定义数据窗口对象[1]
PB中同时“继承”多个用户自定义数据窗口对象[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&