在中间加一层,不让用户直接访问数据库~!!在.NET下很容易实现~~~

解决方案 »

  1.   

    dabai1980(dabai)
     中间层我也想过,使用webservice?但是问题也出现了,维护起来多了一步。
    qqqdong() 
         你这种方式肯定不行,万一服务器改一下密码我还不得重新安装所有的客户端?
      

  2.   

    请楼主看看我的办法~
    楼主所讲的这样一个问题,我觉得应该从数据库的涉及着手解决。你可以建一个用户表,里面放上密码、用户名以及权限ID,然后有一个权限表,里面有具体权限和权限ID,将两个表联系起来,这样,用户的等级和权限的更改都非常的方便。还有一个办法就是用XML,用xsd来限制用户对数据的使用,你可以建一个用户表,每个表一个权限ID,通过查询用户的权限ID来使用不同的预先定制的XSD架构文件。以上两种方法都可以做到您想要的结果。
      

  3.   

    对这个密码进行简单的加密,加密方法在application中,密码放在数据库中
      

  4.   

    qqqdong() 您这种方式我觉得不行。因为我这边的都是基于sql server验证的。 
    turnmissile 你这种方式只适用于asp.net
    Reeezak(奋斗) 你这种方式和qqqdong没什么区别呀。
      

  5.   

    其实办法一:通过程序对用户所能够访问的菜单项做限制,不同的用户只能使用其所能访问的菜单项。
    方法二:在SQLServer上对用户的权限进行限制。个人看法:认为楼主想出在sqlserver上做限制的方法不是最好,因为这样从用户使用或者管理的角度上说,负担很重,而且未必能够取得很好的效果。认为比较妥当的一种做法,即结合我说的方案一,同时设定一个有权访问sqlserver的公共帐户,但是该帐户不是该数据库的所有者,然后所有的数据连接都基于这个帐户。这样做的话,主要是考虑到应用程序与数据库的无关性,管理起来也比较方便。如果采用sqlserver权限的话根本上仍然无法杜绝未经许可的用户查询数据库,所以偶认为那种做法是徒劳的。
      

  6.   

    to 楼主
    我对的第一个办法跟他的办法差不多。但是你看见第二个办法了吗?那个办法不同了吧?还有,第一个办法,我觉得是你自己的业务逻辑的问题。因为那要看你客户到底是干什么的?为什么访问数据。对一个办法还有一个改进,就是自己建一个ConnectionBuilder类,做成webservice,当客户访问是,先去调用webservice,然后由webservice调用ConnectionBuilder,最后返回一个连接字符串给用户。这样,你想什么时候改密码就什么时候改密码。不需要更改客户端。不过,对于安全性,就要考虑考虑了。可以返回一个dataadapter对象给他。^_^
      

  7.   

    qqqdong() 
      您这种办法,假如用户在服务器上更改了您使用的用户的密码.那所有的客户端岂不是都不能使用了?另外,我这边sql server中有一个历史纪录,这个历史纪录是使用触发器生成的,这时候我得记录谁触发的这个事件,所以不能使用一个用户名进行登录。在说,如果使用一直使用一个用户名进行登录的话,sql server中的安全性就没有什么安全性所言了,你使用的那个用户的密码就是一切.如果都这样的话,那数据库根本就没有必要设置什么用户/角色了,难道microsoft没事干做这些没用的东西?可能我现在思路走到了误区,没办法。:)
      

  8.   

    我认为c/s中你可以利用webservice层来隔开程序和数据库服务器的联系,只有web服务器上保持数据库密码,同时这个密码是系统加密过的(在建立于数据库的连接时,该密码要解密)。就算是web服务器的管理员也是无法直接登陆数据库服务器的
      

  9.   

    whhdgy(依依)  使用webservice的方式已经被否决的,因为做一个webservice加上维护,很浪费时间。
      

  10.   

    在数据库上建密码表,要求用户登陆输密码,就像csdn网站一样。
      

  11.   

    可以把用户的密码加密,就可以了,这样用户直接连接到SQL SERVER时再使用登录密码,就连接不上了。
    尤其是在PB的程序中,多采用这样的方法。
      

  12.   

    songhtao(三十年孤独) 您说得这种形式只是用于b/s结构的程序。
    lhx1977(清水无鱼) 我也有此想法,想来想去也只有这种方式了。但是另外的问题是,我使用的另外一个模块早已经做好了,而且咱们没有源代码,我没法改:(
      

  13.   

    加中间层处理用户权限和登录问题,应该是最方便的了。
    通过中间层获取数据库的连接。以前我是用VB写COM+处理的,现在用.net更容易了。
      

  14.   

    com+的话,那么数据库结构更改了,其他的都得改呀。