[@项籍][¥20]开发Java web时应该尽量注意什么才能减少应用漏洞?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

[@项籍][¥20]开发Java web时应该尽量注意什么才能减少应用漏洞?

2018-10-31 00:00:55 1877 1

开发Java web时应该尽量注意什么才能减少应用漏洞?避免系统被频繁攻击。

取消 提交回答
全部回答(1)
  • asdasdasd222
    2019-07-17 23:11:28

    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。

    解决方案:最好删除,如需要使用它来管理维护,可更改其默认路径,口令及密码。

    0 0
相关问答

0

回答

Java性能调优,使用java读取excel文件指定内容性能最快的做法是什么?

2021-11-07 21:43:06 1148浏览量 回答数 0

0

回答

Java性能调优,如何将配置文件内容转换为字节数组,有没有性能更快的做法?

2021-11-07 21:43:07 973浏览量 回答数 0

0

回答

Java性能调优,如何将java HashSet集合对象转换为HashMap,有没有性能更快的做法?

2021-11-07 21:43:06 965浏览量 回答数 0

0

回答

Java性能调优,如何判断java HashSet集合是否包含某个数字,有没有性能更快的做法?

2021-11-07 21:38:26 965浏览量 回答数 0

0

回答

Java性能调优,使用java合并XML属性性能最优的做法是什么?

2021-11-07 21:38:26 1146浏览量 回答数 0

0

回答

Java性能调优,使用java设置XML节点的属性性能最优的做法是什么?

2021-11-12 17:07:32 677浏览量 回答数 0

0

回答

Java性能调优,使用java获取某个XML属性性能最优的做法是什么?

2021-11-07 21:37:27 647浏览量 回答数 0

0

回答

Java性能调优,java中对字符串进行反转操作,有没有性能更快的做法?

2021-11-07 21:35:53 506浏览量 回答数 0

0

回答

Java性能调优,java向HashMap中添加元素性能最快的做法是什么?

2021-11-07 21:36:00 222浏览量 回答数 0

0

回答

Java性能调优,java中使用正则表达式对电话号话验证性能最快方法的是什么?

2021-11-12 17:07:34 227浏览量 回答数 0
+关注
文章
问答
问答排行榜
最热
最新
相关电子书
更多
Web应用系统性能优化
立即下载
Jpom一款低侵入式Java运维、监控软件
立即下载
WEB浏览器中即将发生的安全变化
立即下载