zoukankan      html  css  js  c++  java
  • Java WEB安全问题及解决方案

    1.弱口令漏洞

     
    解决方案:最好使用至少6位的数字、字母及特殊字符组合作为密码。数据库不要存储明文密码,应存储MD5加密后的密文,由于目前普通的MD5加密已经可以被破解,最好可以多重MD5加密。
     
    2.未使用用户名及密码登录后台可直接输入后台URL登录系统。
     
    解决方案:通过配置filter来过滤掉无效用户的连接请求。
     
    3.JSP页面抛出的异常可能暴露程序信息。有经验的入侵者,可以从JSP程序的异常中获取很多信息,比如程序的部分架构、程序的物理路径、SQL注入爆出来的信息等。
     
    解决方案:自定义一个Exception,将异常信息包装起来不要抛到页面上。
     
    4.合法用户“注销”后,在未关闭浏览器的情况下,点击浏览器“后退”按钮,可从本地页面缓存中读取数据,绕过了服务端filter过滤。
    解决方案:配置filter对存放敏感信息的页面限制页面缓存。如:
     
    在CODE上查看代码片派生到我的代码片
    httpResponse.setHeader("Cache-Control","no-cache");   
    httpResponse.setHeader("Cache-Control","no-store");  
    httpResponse.setDateHeader("Expires", 0);  
    httpResponse.setHeader("Pragma","no-cache");  
    5.SQL注入漏洞。
     
    解决方案:在数据库访问层中不要使用“+”来拼接SQL语句!如:
     
    在CODE上查看代码片派生到我的代码片
    String sql=SELECT * FROM USERS WHERE 1=1”;  
    if(null != user.getUserName() && !””.equals(user.getUserName())){  
        sql +=and UNAME = ‘”+user.getUserName()+”’”;  
    }  
    而应使用PreparedStatement。如:
    在CODE上查看代码片派生到我的代码片
    PreparedStatement pstmt = con.prepareStatement("SELECT * FROM USERS WHERE UNAME=?");  
    pstmt.setString(1, “Neeke”);  
    冒号后面是一个named parameter,我们可以使用Query接口将一个参数绑定到name参数上:
    在CODE上查看代码片派生到我的代码片
    List result = session.createQuery(queryString)  
                      .setString("name", user.getUserName())  
                      .list();  
    6.文件上传漏洞。前台仅使用JS对文件后缀做了过滤,这只能针对普通的用户,而恶意攻击者完全可以修改表单去掉JS校验。
     
    解决方案:前台JS过滤加服务器端程序过滤。具体过滤掉哪些文件类型视具体情况而定。
     
    7.可执行脚本漏洞。对用户提交的数据未转义,一些用户提交的含有JavaScript脚本的信息被直接输出到页面中从而被浏览器执行。
     
    解决方案:使用org.apache.commons.lang.StringEscapeUtils对用户提交的数据进行转义。如:
     
    在CODE上查看代码片派生到我的代码片
    @RequestMapping(params="method=addTopic",method=RequestMethod.POST)  
    public ModelAndView addTopic(HttpServletRequest request, HttpServletResponse response, BbsTopic topic)  
    {  
        BaseAdmin user = (BaseAdmin) request.getSession().getAttribute(Constant.SESSION_USER);  
        topic.setBaseAdmin(user);  
        topic.setTopicDate(new Timestamp(System.currentTimeMillis()));  
        topic.setTopicContent(StringEscapeUtils.escapeHtml(topic.getTopicContent()));  
        topic.setTopicTitle(StringEscapeUtils.escapeHtml(topic.getTopicTitle()));  
        this.bbsTopicService.save(topic);  
        return new ModelAndView(new RedirectView("bbs.do?method=topicList&bfid="+ topic.getBfid()));  
    }  
    8.Java WEB容器默认配置漏洞。如TOMCAT后台管理漏洞,默认用户名及密码登录后可直接上传war文件获取webshell。
     
    解决方案:最好删除,如需要使用它来管理维护,可更改其默认路径,口令及密码。
  • 相关阅读:
    Hanoi塔
    采药
    进制转换(大数)
    Load Balancing with NGINX 负载均衡算法
    upstream模块实现反向代理的功能
    epoll
    在nginx启动后,如果我们要操作nginx,要怎么做呢 别增加无谓的上下文切换 异步非阻塞的方式来处理请求 worker的个数为cpu的核数 红黑树
    粘性会话 session affinity sticky session requests from the same client to be passed to the same server in a group of servers
    负载均衡 4层协议 7层协议
    A Secure Cookie Protocol 安全cookie协议 配置服务器Cookie
  • 原文地址:https://www.cnblogs.com/lr393993507/p/5454469.html
Copyright © 2011-2022 走看看