网络安全

位置:IT落伍者 >> 网络安全 >> 浏览文章

PB应用的数据库联接的安全防范[1]


发布日期:2018年11月23日
 
PB应用的数据库联接的安全防范[1]

在通常的Server/Client方式MIS开发中由于程序要与数据库服务器保持联接为了程序的灵活和扩充性联接参数(用户ID和登录口令)又不能在程序中写死(其实写死也不是一种好的方法)一般的方法无外乎有两种其一是把联接参数存放在注册表中其二就是直接读INI文件

本人找到一种方法可以解决数据库应用的安全性问题通过INI文件和数据库的巧妙处理在程序中提供用户一种接口可以随时修改数据库的联接参数而又不给外人以蛛丝马迹做到神不知鬼不觉

实现方法如下

创建INI文件记录数据库联接的一些方便程序分发的参数DBMSSERVERNAMELOGID具体如下

//创建成INI文件(rsglini)

[Database]

DBMS=O ORACLE

ServerName=gxmistest //数据库服务器名

LogId=rsgl //实际的数据库登录用户

然后在数据库中创建一个中间用户PUB登录口令PUB赋予PUB用户CONNECTRESOURCE权限再在其中创建表CREATE TABLE TBL_PUB_PASSSHADOW (PASSSHADOW VARCHAR) NOT NULL)用于存放实际的数据库联接的登录口令(当然要经过加密)加密函数网上多的是在此就不累述

我自已创建了一个字符串加密函数f_password(string old_strstring new_strinteger jm_mode)jm_mode参数用以区分函数的加(解)密old_strnew_str两参数分别为加(解)密的字符串

就开始编写应用程序了在应用程序的OPEN事件中进行数据库登录联接程序脚本如下

string ls_inifilels_starttimes

string ls_logidls_logpassls_dbms

string ls_passls_sqlls_codels_server

//设置INI文件

ls_inifile = rsglini

ls_server = ProfileString (ls_inifile database ServerName

ls_logid = ProfileString (ls_inifile database LogId

// Profile pub

SQLCADBMS = ProfileString (ls_inifile database dbms

SQLCALogPass = pub

SQLCAServerName = ls_server

SQLCALogId = pub

SQLCAAutoCommit = False

SQLCADBParm =

connect using sqlca;

//得到用户RSGL加过密的用户口令

select passshadow into:ls_pass from tbl_pub_passshadow;

//口令解密

ls_pass = f_password(ls_pass

disconnect using sqlca;

//联接到实际的数据库用户RSGL

SQLCAServerName = ls_server

sqlcaDBMS = ProfileString (ls_inifile database Dbms

SQLCADBParm = ProfileString (ls_inifile database Dbparm

sqlcadatabase = ProfileString (ls_inifile database database

sqlcauserid = ProfileString (ls_inifile database userid

sqlcadbpass = ProfileString (ls_inifile database dbpass

sqlcalogid = ls_logid

sqlcalogpass = ls_pass//ProfileString (ls_inifile database LogPass

SQLCAAutoCommit = False

connect using sqlca;

if sqlcasqldbcode <> then

choose case sqlcasqldbcode

case

MessageBox (string(sqlcaSQLDBCode)不能联接数据库~r错误无效的用户名和口令请与管理员联系!

case

MessageBox (string(sqlcaSQLDBCode)不能联接数据库~r错误服务器名不存在!请与系统管理员联系

case

MessageBox (string(sqlcaSQLDBCode)不能联接数据库~r错误数据库不支持你当前的安装!

case else

MessageBox (string(sqlcaSQLDBCode)不能联接数据库~r错误+ sqlcasqlerrtext)

end choose

halt close

else

open(w_gd_frame) //打开应用程序的主窗口

end if

接下来就是编写一个用户接口让授权用户随时修改数据库联接参数窗口界面见下图(文件名称dblogonjpg)窗口上面的控件有

[] []

               

上一篇:PB应用的数据库联接的安全防范[2]

下一篇:powerbuilder程序防止破解的办法[2]