知识大全 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]

PB开发Sybase数据库应用技巧点滴[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 PB开发Sybase数据库应用技巧集锦[1]

PB开发Sybase数据库应用技巧集锦[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 在PB中应用AutoCAD图形数据库

在PB中应用AutoCAD图形数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PowerB

知识大全 PB开发Sybase数据库应用技巧点滴[2]

PB开发Sybase数据库应用技巧点滴[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 PB开发Sybase数据库应用技巧集锦[2]

PB开发Sybase数据库应用技巧集锦[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 PB中实现可监控的数据备份

PB中实现可监控的数据备份  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在众多的数据库应用开发

知识大全 在PB中使用FoxPro数据库的方法[1]

在PB中使用FoxPro数据库的方法[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一利用

知识大全 PB内置Oracle数据库接口的使用方法[1]

PB内置Oracle数据库接口的使用方法[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  P

知识大全 PB中数据窗口的多表更新[1]

PB中数据窗口的多表更新[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  原理分析  数据窗

知识大全 PB中同时“继承”多个用户自定义数据窗口对象[1]

PB中同时“继承”多个用户自定义数据窗口对象[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&