转载:Java项目安全问题及解决方案

1.弱口令漏洞

解决方案:最好使用至少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”);
如果项目中使用了Hibernate框架,则推荐使用named parameter。如:

String queryString = “from Users where uname like :name”; 冒号后面是一个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。

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

9.日志,建议增加服务器的访问日志,记录来访者的IP,传递参数,对后台操作用户建立日志,记录操作内容,完善日志记录可以帮助你发现潜在危险,找到已经发生的问题。
10.重放攻击
11.僵尸网络暴力破解
12.登陆表单http明文提交
13.千万不要乱用数据类型,使用基本数据类型,少用包装类,包装类容易被攻击,不要用string去接受所有类型数据。原则上:是什么类型就用什么类型去接收。
14.通过架构设计,添加一层设置处理http参数。一般都是通过aop来实现.比如:对邮件,手机验证对整数最大值验证,对字符串最大长度验证
15.点击劫持,大概有两种方式,一是攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,此时用户将在不值钱的情况下点击透明的iframe页面,二是攻击者使用一张图片覆盖在网页,遮挡网页原有位置的含义。

Java项目安全问题及解决方案相关推荐

  1. JavaWeb 项目安全问题及其解决方案

    JavaWeb 项目安全问题及其解决方案 参考文章: (1)JavaWeb 项目安全问题及其解决方案 (2)https://www.cnblogs.com/lhhitnote/p/5531567.ht ...

  2. java项目 异常如何解决方案,java 项目

    java service 项目有关问题 javaservice项目问题?javaservice项目部署到tomcat中了,无法启动.好像记得把项目中一部分文件复制到tomcat的webapps目录下就 ...

  3. java多线程安全解决方案_《Java多线程编程核心技术(第2版)》 —1.2.8 实例变量共享造成的非线程安全问题与解决方案...

    1.2.8 实例变量共享造成的非线程安全问题与解决方案 自定义线程类中的实例变量针对其他线程可以有共享与不共享之分,这在多个线程之间交互时是很重要的技术点. 1.不共享数据的情况 不共享数据的情况如图 ...

  4. IntellIJ IDEA 导入 Java 项目后无法运行 main 方法的解决方案

    问题描述: 使用 IDEA 导入一个普通的 Java 项目后,当需要运行项目中的一个类中的main方法时,但此时发现,鼠标右键发现菜单中没有 Run main 而且 main 函数前也没有出现可以运行 ...

  5. Android Studio使用过程中Java类突然报红,但项目可运行解决方案

    Android Studio使用过程中Java类突然报红,但项目可运行解决方案 参考文章: (1)Android Studio使用过程中Java类突然报红,但项目可运行解决方案 (2)https:// ...

  6. Java项目中高并发问题的简单解决方案

    Java项目中高并发问题的简单解决方案 1.尽量使用缓存技术来做.用户缓存,页面缓存等一切缓存,使用特定的机制进行刷新.利用消耗内存空间来换取用户的效率,同时减少数据库的访问次数. 2.把数据库的查询 ...

  7. java项目日志文件过大解决_Tomcat catalina.out文件过大的解决方案

    JAVA项目经常会让磁盘爆满,对系统的稳定造成了一定的影响.可能就是你的配置与项目设置问题! 按照别人的说法: System.out 和 System.err 都被打印到 catalina.out. ...

  8. java项目实战应用知识概括

    java项目实战应用知识概括 Jasypt 加密 ICU4J Idea插件 BI商业智能 Google验证码Kaptcha 数据脱敏 QRCode二维码 邮件发送与接收 富文本与Markdown Ja ...

  9. 立足GitHub学编程:13个不容错过的Java项目

    今天我们将整理一大波干货满满的优秀Java项目. GitHub可谓一座程序开发的大宝库,有些项目值得fork,有些则能帮助我们改进自有代码或者学习编程技能.无论如何,开发工作当中我们几乎不可能绕得开G ...

最新文章

  1. URAL 1471 Tree
  2. MYSQL 练习题
  3. Lomox0.2.0.1_Plugin_beta
  4. 工作区 暂存区 版本库之间的关系
  5. java 文本工具类_干货:排名前16的Java工具类
  6. 上帝造题的七分钟(ybtoj-树状数组)
  7. Promise解决回调地狱写法
  8. c++ tcp 服务器和客户端例子
  9. ssis 数据转换_SSIS数据透视和SSIS数据透视转换概述
  10. 事务的四个属性ACID
  11. SqlServer 按指定顺序进行排序
  12. SpringBoot系列(4):构建一个多模块SpringBoot项目
  13. matlab随机函数
  14. 智能一代云平台(十六):解决Linux服务器被植入木马总结
  15. Python pandas练习Retuns50stocks股票,纯英文ipynb作业20题,100%正确答案
  16. 竞赛资讯|A股上市公司季度营收预测
  17. 获取应用包名、获取应用名称、获取MetaData值、获取应用所有Permission、获取permission对应描述信息
  18. FZU-1493-ElGamal数字签名-A^X=B(%C)求x
  19. 2019全国高校深度学习师资培训班免费报名中
  20. 光电隔离电路设计方案(六款基于光耦、AD210AN的光电隔离电路图)

热门文章

  1. XAMPP+PhpStorm
  2. 去哪儿网2023正式秋招啦,来这里可以内推
  3. 红警ol服务器维护中1003,不止于经典,全球唯一正版授权《红警OL》登录UP2018腾讯新文创生态大会...
  4. 使用Node+websocket实现简易1v1聊天室(前端+服务器)
  5. FAERIE QVEENE 仙后节选
  6. 你知道中国大陆一共有多少IPv4地址吗?
  7. Unity 报错处理
  8. SAP函数 计算两个日期期间的天数
  9. C语言 before string,c语言中expected expression before是什么意思?
  10. 2020年11月份某kh比赛部分CTF赛题求大佬解题思路