我说说我在做web方面的用户认证时常用的方法:
1.有关用户登录的页面全部通过https来访问。
2.用户信息放在数据库或者目录服务都可以,但是密码不要存明文。加密算法最好不可逆(我们是采用Hash算法,虽然有可能出现两个密码的Hash值相同,不过这个概率非常非常小)
3.如果不采用不可逆的加密算法,至少也要采用例如DES或者3DES对密码进行加密,要保证一定的加密强度,不要使用移位等简单的加密算法。

解决方案 »

  1.   

    这根加密可逆不可逆没有关系的http协议是无连接协议两个人发送的请求时一样的话  服务器没办法判断真伪的我把你的请求截下来  在发出去  服务器当然是认为我发出去的你加密又有什么用
      

  2.   

    是呀!我好象也在一本书上看见说HTTP传输不是很安全!好象还说用什么HTTPS!
    jokerjava(冷血) 可以在说点给我听听吗?谢谢!
      

  3.   

    java中用jsse和jaas,在网上查询一下
      

  4.   

    http也不是想象的那么不安全  需要有硬件的支持才能截获http请求的
    也就是你的数据从我的计算机节点通过  对于一般的计算机用户来说
    这个恐怕不是很容易这里是tomcat的ssl + http的配置
    http://jakarta.apache.org/tomcat/tomcat-4.1-doc/ssl-howto.html
      

  5.   

    强,果然高手。友情Up
    将“流氓无赖”测试到底
    ——始于2003年7月
    树欲止而风不停,行云流水匆匆去;
    树梢蚂蚱凭空望,江边浪花碎巨石; 支持“流金岁月”!!!
    发送框,少个“右键菜单,选择粘贴”;
    ——2003年12月24日am^@^
      

  6.   

    谢谢!楼上的!我还想听听有没有新的想法不一定要局限  在JAVA
    的范围内!
      

  7.   

    通信加密 ---> SSL
    用户密码加密 ---> MD5
      

  8.   

    分四种实体user : 用户信息,这里只保存必要的信息(比如登录名和密码)。因为你要重用嘛。和具体系统有关的用户信息不要保存在这里,提供一个关联即可userGroup : 用户组。 和用户是一对多关系。一个userGroup里保存多个用户role : 角色。 就是你通过需求分析出来的系统有哪些角色。 一个角色里可以保存多个用户组。Resource : 资源。就是系统有哪些功能。 resource是和role有关系的。 在需求时就可以确定什么样的角色可以有哪些功能。一个role里可以有多个resource。这样通过四种实体的关系,可以得到一个用户有哪些功能。
    做一个通用的模块把上面这四种实体维护起来到数据库中。 (这个一点也不难)
    定义好这个模块对外的接口。以提供外部调用。 在你的权限模块加一个单独的类,提供一个静态的验证的方法。比如 boolean hasResource(String userId, String resourceId);提供一个用户,和一个要验证的资源。 如果该用户有权限返回true,否则返回false,以便在其它模块里使用这个方法来判断用户是否有权限。至于你是不是要一次把该用户所有权限都取出来,然后相应的显示菜单了什么的。 看你的需要,加一个取指定用户全部resource方法可能较好。
    这种实现的好处是设计相对简单,并在权限设置上有很大的灵活性,而且有一定的重用价值。(我们已经用在不同的项目中了)。
    整个权限模块只有一个方法和其实模块有偶合,就是那个验证是否有权限的方法
    boolean hasResource(String userId, String resourceId);坏处是这种实现对数据库来说也要复用。 因为这个权限模块所对应的表结构已经定下来了。所以如果想在其它项目中用这个模块,其相应的表也得放入这个项目中(不过这几个表非常独立,不会影响太大)。