我用Delphi(ado或bde都可以)连接sqlserver,在客户端要求用户凭帐号和密码登录,这个帐号和密码放在一张数据库中的表userlist中,另外还有一个用户管理的程序,可以修改这个userlist表以实现增删用户等操作,这些功能在程序可以实现,但问题是帐号的安全问题,如果登录数据库服务器只用一个sa帐号密码为空,这样别人不是也可以自己做一个程序来连接数据库服务器吗? 连接后也可以修改什么的,帐号不是就很不安全了吗?即使把访问sqlserver的帐号设置了密码,但这在客户端程序中肯定也要将密码写进去,这样的话,通过一些途径也很容易从客户端中分析到密码和帐号!所以我向大家请教好的解决方法,希望大家帮忙!

解决方案 »

  1.   

    从内部管理的角度来说,非常安全的方案肯定要相当的代价,而且懂技术的系统管理员肯定是“永远的痛”。
    可接受的代价是——加密。
    对所有用户帐号、密码均加密,且密码的加密为高强度型。
    sa也设置非易猜测的密码,并加密保存。且建议用经常更换。
    当然,也可删除sa帐号,另行添加具备管理员级别的数据库用户。
      

  2.   

    所以不建议SA密码为空。而且如果你不在客户端把密码写进去,连数据库时ADO等都会自动提示。要你输入。且在userlist中用一种较好的加密算法把你的用户密码加密。
      

  3.   

    放在单独文件中难道不放到数据库中吗?
    不放到数据库中就只能放在客户机上了,那就玩不成了!
    我想知道一般的后台数据库用sqlserver时,sqlserver要不要设置帐号和相应的密码,不设的话都可以写个连接程序连接数据库进行任意的操作了!就是设了密码也是容易找得出的。
      

  4.   

    现在的方案是不是这样: 
    1.去掉sa帐号(防止猜测密码),重建一个帐号并设定密码。
    2.加密userlist中帐号和密码。
    还有一个问题如果更改了sqlserver的登录密码,那客户端程序就登录不上了!
    有什么好的方案吗?还有我想做好的系统应该不需要去操作sqlserver,所有的操作(包括用户权限、用户管理等)都在自己写的客户端应用程序中实现!
      

  5.   

    另外在access中有自动编号的字段,在sqlserver中的数据库中怎么没有呢?
    要自己实现就有点繁。
      

  6.   

    有啊!查一下帮助CREATE TABLE 有个INDENTITY参数的,仔细看看。