Java WEB安全问题及解决方案
2014-04-12 07:11
453 查看
1.弱口令漏洞
解决方案:最好使用至少6位的数字、字母及特殊字符组合作为密码。数据库不要存储明文密码,应存储MD5加密后的密文,由于目前普通的MD5加密已经可以被破解,最好可以多重MD5加密。
2.未使用用户名及密码登录后台可直接输入后台URL登录系统。
解决方案:通过配置filter来过滤掉无效用户的连接请求。
3.JSP页面抛出的异常可能暴露程序信息。有经验的入侵者,可以从JSP程序的异常中获取很多信息,比如程序的部分架构、程序的物理路径、SQL注入爆出来的信息等。
解决方案:自定义一个Exception,将异常信息包装起来不要抛到页面上。
4.合法用户“注销”后,在未关闭浏览器的情况下,点击浏览器“后退”按钮,可从本地页面缓存中读取数据,绕过了服务端filter过滤。
解决方案:配置filter对存放敏感信息的页面限制页面缓存。如:
5.SQL注入漏洞。
解决方案:在数据库访问层中不要使用“+”来拼接SQL语句!如:
6.文件上传漏洞。前台仅使用JS对文件后缀做了过滤,这只能针对普通的用户,而恶意攻击者完全可以修改表单去掉JS校验。
解决方案:前台JS过滤加服务器端程序过滤。具体过滤掉哪些文件类型视具体情况而定。
7.可执行脚本漏洞。对用户提交的数据未转义,一些用户提交的含有JavaScript脚本的信息被直接输出到页面中从而被浏览器执行。
解决方案:使用org.apache.commons.lang.StringEscapeUtils对用户提交的数据进行转义。如:
8.Java WEB容器默认配置漏洞。如TOMCAT后台管理漏洞,默认用户名及密码登录后可直接上传war文件获取webshell。
解决方案:最好删除,如需要使用它来管理维护,可更改其默认路径,口令及密码。
解决方案:最好使用至少6位的数字、字母及特殊字符组合作为密码。数据库不要存储明文密码,应存储MD5加密后的密文,由于目前普通的MD5加密已经可以被破解,最好可以多重MD5加密。
2.未使用用户名及密码登录后台可直接输入后台URL登录系统。
解决方案:通过配置filter来过滤掉无效用户的连接请求。
3.JSP页面抛出的异常可能暴露程序信息。有经验的入侵者,可以从JSP程序的异常中获取很多信息,比如程序的部分架构、程序的物理路径、SQL注入爆出来的信息等。
解决方案:自定义一个Exception,将异常信息包装起来不要抛到页面上。
4.合法用户“注销”后,在未关闭浏览器的情况下,点击浏览器“后退”按钮,可从本地页面缓存中读取数据,绕过了服务端filter过滤。
解决方案:配置filter对存放敏感信息的页面限制页面缓存。如:
httpResponse.setHeader("Cache-Control","no-cache"); httpResponse.setHeader("Cache-Control","no-store"); httpResponse.setDateHeader("Expires", 0); httpResponse.setHeader("Pragma","no-cache");
5.SQL注入漏洞。
解决方案:在数据库访问层中不要使用“+”来拼接SQL语句!如:
String sql= “SELECT * FROM USERS WHERE 1=1”; if(null != user.getUserName() && !””.equals(user.getUserName())){ sql += “ and UNAME = ‘”+user.getUserName()+”’”; }而应使用PreparedStatement。如:
PreparedStatement pstmt = con.prepareStatement("SELECT * FROM USERS WHERE UNAME=?"); pstmt.setString(1, “Neeke”);冒号后面是一个named parameter,我们可以使用Query接口将一个参数绑定到name参数上:
List result = session.createQuery(queryString) .setString("name", user.getUserName()) .list();
6.文件上传漏洞。前台仅使用JS对文件后缀做了过滤,这只能针对普通的用户,而恶意攻击者完全可以修改表单去掉JS校验。
解决方案:前台JS过滤加服务器端程序过滤。具体过滤掉哪些文件类型视具体情况而定。
7.可执行脚本漏洞。对用户提交的数据未转义,一些用户提交的含有JavaScript脚本的信息被直接输出到页面中从而被浏览器执行。
解决方案:使用org.apache.commons.lang.StringEscapeUtils对用户提交的数据进行转义。如:
@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。
解决方案:最好删除,如需要使用它来管理维护,可更改其默认路径,口令及密码。
相关文章推荐
- JavaWeb 项目安全问题及其解决方案
- Java WEB安全问题及解决方案
- Java WEB项目安全问题及解决方案
- Java WEB安全问题及解决方案
- JavaWeb 项目安全问题及其解决方案
- JavaWeb 安全问题及解决方案
- Java WEB安全问题及解决方案
- Java WEB安全问题及解决方案
- Java Web 一些特殊字符的过滤(appscan检查的安全问题)
- javaweb开发中中文乱码问题的解决方案
- java-web文件上传下载,可解决多个安全访问问题
- javaWeb安全问题
- JAVAWEB开发过程中中文乱码问题解决方案
- javaWeb -myEclipse源代码中文乱码问题解决方案
- Eclipse下,SVN迁出JavaWeb工程问题汇总及解决方案
- javaweb出错笔记:eclipse导入的项目jstl找不到uri的问题解决方案
- JAVA多线程不安全问题解决方案(多线程并发同一资源)。
- java web开发中遇到的问题及解决方案(个人学习日志,持续更新)
- JAVA Web 安全机制----使用filter验证session用户和页面缓存问题处理
- dwr实现javaweb实时聊天通讯网页版常见问题及解决方案