请问用java开发web应用程序时 安全性方面 主要应该考虑哪些方面?应该用怎样的方法解决各类可能的安全性问题?
比如简单的,非授权登陆,非授权访问,通过不允许的地址访问等 谢谢。

解决方案 »

  1.   

    大致有以下几点
    1. 资源安全 
        说白了就是非授权的登录,而登录之后又需要对相关资源进行保护,对于没有权限的资源禁止访问,不予显示等。
    2. 控制权限
        一般来说当客户端获取了相关资源的访问权限后,可以对其动作进行权限控制,并且这也是必要的,比如:最简单的crud操作,并非每个可以访问该资源的客户端都拥有其所有的权限。很可能是该用户仅仅能够进行r操作,而其他的需要管理员权限。
    3. 实体访问权限
       这个权限控制的使用实际上并不是那么多的,比如说一个只需要有普通权限就能访问的资源,出现这样一个需求。只有相应部门的客户端才能访问,而其他部门的则不能访问。我一般对1会选择jaas进行,2采用aop解决,3动态代理解决。
    有时候也会使用spring security不过这个东西还是有复杂度的。
    具体的细节。就需要楼主自行研究了
      

  2.   

    一般来说,加个过滤器就能处理你说的这些问题,比如非授权登陆,非授权访问,通过不允许的地址访问;建立好资源表,对资源建立安全级别后,根据人物的角色对当前URL进行过滤控制就可以了;级别不够就跳转到错误页面。
      

  3.   

    监听器,过滤器都可以考虑,而且简单,还可以控制Session的使用
      

  4.   

    通过过滤器、监听器、拦截器去监视每个用户登录的过程、可以用log4j记录下客户端登录的整个过程
    可以用过滤器或者拦截器去过滤、拦截非法路径的访问~
    希望对lz有帮助
      

  5.   

    我目前接触过的有跨站点脚本编制、SSL安全证书验证、URL链接访问等。
    部分代码如下:
    public static String filter(String value) { if (value == null || value.length() == 0) {
    return value;
    } StringBuffer result = null;
    String filtered = null;
    for (int i = 0; i < value.length(); i++) {
    filtered = null;
    switch (value.charAt(i)) {
    case '<':
    filtered = "&#60;";
    break;
    case '>':
    filtered = "&#62;";
    break;
    case '&':
    filtered = "&amp;";
    break;
    case '"':
    filtered = "&#34;";
    break;
    case '\'':
    filtered = "&#39;";
    break;
    case '(':
    filtered = "&#40;";
    break;
    case ')':
    filtered = "&#41;";
    break;
    } if (result == null) {
    if (filtered != null) {
    result = new StringBuffer(value.length() + 50);
    if (i > 0) {
    result.append(value.substring(0, i));
    }
    result.append(filtered);
    }
    } else {
    if (filtered == null) {
    result.append(value.charAt(i));
    } else {
    result.append(filtered);
    }
    }
    } return result == null ? value : result.toString();
    }