关于数据库安全问题探讨(200分)

  • 主题发起人 主题发起人 hxf
  • 开始时间 开始时间
H

hxf

Unregistered / Unconfirmed
GUEST, unregistred user!
在数据库C/S型开发中,应用程序中要输入USER-ID及PASSWORD,可应用程序中的
USER-ID,PASSWORD在 .EXE程序中为可看到的明码,经有限次的试验可以试出。请问
该安全性问题如何解决。
 
"可看到的明码" 不知是何意思?
 
简单,用ASPACK压缩一把就成
 
是否指登陆服务器数据库时要求输入的UserId 和 PassWord,
如是的话,可以用加密算法来界定:
Const
conStrUserId='aaaa';
conStrPassWord='bbb';


procedure ??????????? // 自己考虑放在哪个过程里吧
begin
....
database1.params:=Format('user name=%s '
+ 'password =%s ',
[EaraseMiMa(conStrUserId),
EaraseMima(conStrPassWord)]);
//EaraseMima 为解密 函数
database1.Connected := True;
.....
end
 
我习惯将PASSWORD加密,存在注册表中。
连接数据库时读出,解密
Datebase1.Params.Value['PASSWORD']:=DBPASSWORD;
try
Datebase1.Connect;
except
// Error!
end;
 
用户账号信息应该存放在server端的数据库里面,登陆的时候先把username+password
传过去,如果正确旧继续,否则推出.

这样除非server被黑掉了,否则应该比较安全.
 
hehe,一般的c/s结构多半是居于网,也不用考虑太多,特别是用户水平低的时候。
我就经常放在注册表里。甚至是ini文件。
 
1.所谓的~明码~是完全可以避免的,如:
password='a'+ 'd'+'m'+'i'+'n'....
2.最好在自己的数据库中再加一道门,我习惯用串CRC法,数据库中有一个表记录每一个
数据库用户的密码串的CRC值。当然算法是自己定义的,越复杂越安全。
 
1。用ASPACK压缩是很易被反压缩的,这对想到去看 .exe文件内PASSWORD明码的人是毫无
作用的。
2。我去试了一下,如果在DATABASE控件中写入password='a'+ 'd'+'m'+'i'+'n'....,
去看一下 .exe可以明白无误地看到password='a'+ 'd'+'m'+'i'+'n'....这一字串,
显然,明码还是存在。
3。我想说的是,写在应用程序中的USER-ID及PASSWORD怎样不会被别人轻易找出,这跟
server端是没有关系的。这样的应用是很多的,比如,某人具有写入库中的权限,但不
能访问及修改库。
 
>>某人具有写入库中的权限,但不能访问及修改库。

这难道不应该用sql server的自己权限控制吗? 这样的应用都应该
把用户信息放在服务器端,这样才安全,也便于管理.
 
让sql server自己控制权限,不行吗?
>>我去试了一下,如果在DATABASE控件中写入...
怎么试?教教我...
wumengs@sina.com.cn
 
在DATABASE控件中使用ONLOGIN事件,程序中可以输入USERID及PASSWORD,此时的USERID
及PASSWORD可以使用加密字串,这样,明码就可以避免了。但高手还可以从内存或网络
上看到有用的信息。并且操作系统或数据库系统本身留有后门或有安全性问题,所以
绝对的安全是相当有难度的,我觉得似乎是难以做到的。
 
非常感谢各位,我深受启发,问题也得到部分解决!!
 
后退
顶部