Access数据库的安全问题(50分)

  • 主题发起人 主题发起人 再见卡门
  • 开始时间 开始时间

再见卡门

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手,请问Access数据库可否设置一下,使一般人不能随意进去,或进去之后不能修改里面的数据?但同时不能影响我的程序运行?
 
那你就把access数据库加上密码就可以。
 
怎样加密啊,可否说清楚一些啊,我在线试一下功夫
 
你启动access为数据库加上密码啊。
 
access的密码没有什么用!破解它的软件很多!
 
原以为商业软件用acess的不多,现在看来用的access的还真不好呢.
 
骗一般人还是可以的啦!
 
见有文章说可以设工作组方式!而且我看到以前有几个财务软件就用此种方式我也不知如何用!!还有见有文章在用前解密用完加密的方式!不过在使用中就不能加密了!!!但一般人我看还是能对付的!!
 
Access的安全性能很差,你可以用SQL Server2000的个人版来代替Access
 
数据工人说得没错,而且将来可以直接移植到SQLSERVER
 
加密是没有什么问题,只是我的程序也不能访问它了,这咋办啊?
以前程序是没有问题的
 
字段的onGetText里解密,onSetText里加密。
这样数据库里就是加密过的。
但这样性能不太好!
 
哎,根本问题还是没有解决,
我和delphi程序不能够访问它了,
哪位有过这方面经验啊,给小弟讲讲啊,谢了
 
你可以去看看读取数据库密码的软件是如何写的~,我看过一篇文章,加密码方法是改变ACCESS原有的密钥,从而达到让别人读取密码密码都是错误的.这个不管怎么加密,只要你用这个数据库,就是可以破解的,除了上面那位老兄说的,把存入的数据加密一下~
 
加密码,把数据库文件放隐蔽一点的目录。
 
>>我和delphi程序不能够访问它了,
这么说你希望以明文保存。
你可能只是设置数据库口令就行了。防低级用户还是可以的。
 
function LockupFile(FileName:string;Lock:boolean=true):integer;
//加密、解密数据库,针对 Access 2000
var
f:File;
bf:array[0..63] of Byte;
i:integer;
const
fpos=64;
flen=64;
//下面改为自己的密钥,我是用随机生成的,请改为自己的密钥
pw:array[0..63] of byte=
($97,$A0,$AC,$61,$16,$59,$2A,$6F,
$91,$33,$51,$57,$D4,$A3,$94,$16,
$3D,$B2,$C8,$A0,$7C,$A6,$30,$EE,
$34,$D6,$9D,$FE,$F6,$EC,$A5,$1F,
$71,$2C,$19,$69,$D3,$25,$5B,$8B,
$D3,$95,$AB,$C9,$02,$8A,$87,$44,
$9F,$C7,$D8,$6D,$BA,$69,$56,$15,
$FA,$CB,$03,$D6,$94,$A6,$BE,$F0);
begin
result:=-1;
if not FileExists(FileName) then exit;
try
AssignFile(f,Filename);
Reset(f,1);
Seek(f,fpos);
BlockRead(f,bf,flen);
//下面的代码是判断是否被加密,你可以用二进制编辑器打开MDB文件对比,
//我是用第64,65字节作为是否加密的标记,未加密与版本相关,加密后与版本和密钥相关
if lock and (bf[0]=$2B) and (bf[1]=$EE)
or not lock and (bf[0]=$BC) and (bf[1]=$4E)
or not ((bf[0]=$2B) and (bf[1]=$EE))
and not ((bf[0]=$BC) and (bf[1]=$4E)) then
begin
result:=0;
exit;
end;
for i:=0 to flen-1 do
bf:=bf xor pw[i mod 64];
Seek(f,fpos);
BlockWrite(f,bf,flen);
result:=1;
finally
CloseFile(f);
end;
end;
 
ACCESS安全性确实不太好,还要注意ADO的版本问题,有时会出现莫明其妙的错误。
 
我有一个想法,可不可以给它设一个密码,从而我们在外面直接打开它的时候是不可以的,我在程序中给出这个密码,让程序可以去访问它,这可以吗?理论上是过得去的.
 
我曾尝试这样做,可是我的程序也不能访问它了
 
后退
顶部