java项目安全性问题 缺乏、安全感 2022-11-05 11:57 46阅读 0赞 # java项目安全性问题 # #### 一、登录爆破 #### * ##### 问题: ##### 1. 登录无错误限制,可以无限制的错误尝试登录 * ##### 解决思路: ##### 1. 增加登录错误计数,达到一定数量就禁止用户登录一定时间 #### 二、密码安全 #### * ##### 问题: ##### 1. 用户密码过于简单,容易被破解 2. 用户登录、修改密码时用明文传输,可以被抓包工具获取 * ##### 解决思路: ##### 1. 用户设置、修改密码的时候对密码强度进行等级判定 2. 数据加密,可使用RSA、MD5等加密算法 #### 三、跨站脚本攻击(XSS) #### * ##### 问题: ##### 1. 可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务 2. 接口数据安全 * ##### 解决思路: ##### 1. 在用户提交的时候 判断脚本并且去掉相关信息 2. https://blog.csdn.net/qq\_28945959/article/details/114171863 #### 四、SQL注入 #### * ##### 问题: ##### 1. ##### 别人利用sql漏洞删库删表。 ##### 2. ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09iamVjdF9kZV9GYXRoZXI_size_16_color_FFFFFF_t_70_pic_center] * ##### 解决思路: ##### 1. 代码层面最好的办法就是预编译 2. 确认每种数据的类型,比如数字在数据库中必须使用int类型存储 3. 规定数据长度,能在一定程度上放置sql注入 4. 严格限制数据库权限,能最大程度减少sql注入的危害 5. 过滤参数中含有的一些数据库关键词 6. 在数据库访问层中不要使用“+”来拼接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(); #### 五、数据重复 #### * ##### 问题: ##### 1. 高并发情况下,多个线程同时插入or修改导致数据重复 * ##### 解决思路: ##### 1. 使用分布式锁 #### 六、数据安全 #### * ##### 问题: ##### 1. **合法用户“注销”后,在未关闭浏览器的情况下,点击浏览器“后退”按钮,可从本地页面缓存中读取数据,绕过了服务端filter过滤。** * > 解决方案:配置filter对存放敏感信息的页面限制页面缓存。如: httpResponse.setHeader(“Cache-Control”,“no-cache”); httpResponse.setHeader(“Cache-Control”,“no-store”); httpResponse.setDateHeader(“Expires”, 0); httpResponse.setHeader(“Pragma”,“no-cache”); 2. **文件上传漏洞。前台仅使用JS对文件后缀做了过滤,这只能针对普通的用户,而恶意攻击者完全可以修改表单去掉JS校验。** * > 解决方案:前台JS过滤加服务器端程序过滤。具体过滤掉哪些文件类型视具体情况而定。 3. **.可执行脚本漏洞。对用户提交的数据未转义,一些用户提交的含有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())); } 4. **Java WEB容器默认配置漏洞。如TOMCAT后台管理漏洞,默认用户名及密码登录后可直接上传war文件获取webshell。** * > 解决方案:最好删除,如需要使用它来管理维护,可更改其默认路径,口令及密码。 5. **日志,建议增加服务器的访问日志,记录来访者的IP,传递参数,对后台操作用户建立日志,记录操作内容,完善日志记录可以帮助你发现潜在危险,找到已经发生的问题。** 6. **僵尸网络暴力破解** 7. **重放攻击** 8. **登陆表单http明文提交** 9. **千万不要乱用数据类型,使用基本数据类型,少用包装类,包装类容易被攻击,不要用string去接受所有类型数据。原则上:是什么类型就用什么类型去接收。** 10. **通过架构设计,添加一层设置处理http参数。一般都是通过aop来实现.比如:对邮件,手机验证对整数最大值验证,对字符串最大长度验证** 11. **点击劫持,大概有两种方式,一是攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,此时用户将在不值钱的情况下点击透明的iframe页面,二是攻击者使用一张图片覆盖在网页,遮挡网页原有位置的含义。** [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09iamVjdF9kZV9GYXRoZXI_size_16_color_FFFFFF_t_70_pic_center]: /images/20221023/8840b1180ff64306870ee32fe7f0207f.png
相关 Java反射API滥用引发的安全性问题案例 在Java中,反射API(Reflection API)是一种强大的工具,它允许程序在运行时检查类、接口、方法和字段等信息。然而,如果不当使用,反射API也可能引发安全性问题。 ╰+哭是因爲堅強的太久メ/ 2024年09月10日 22:21/ 0 赞/ 34 阅读
相关 数据库安全性问题的演示 近年来,随着互联网的迅猛发展,数据库安全性问题变得日益重要。数据库是存储和管理大量敏感信息的关键组件,因此,保护数据库的安全性至关重要。在本文中,我将演示一些常见的数据库安全性 小灰灰/ 2024年03月02日 08:35/ 0 赞/ 18 阅读
相关 java项目安全性问题 java项目安全性问题 一、登录爆破 问题: 1. 登录无错误限制,可以无限制的错误尝试登录 解决思路: 缺乏、安全感/ 2022年11月05日 11:57/ 0 赞/ 47 阅读
相关 Java线程及安全性问题 多线程基础知识: 线程:就是进程中一个负责程序执行的控制单元(执行路径),一个进程中可以包含多个线程,称之为多线程。 一个进程当中至少要有一个线程。 开启多个线程是 拼搏现实的明天。/ 2022年08月13日 10:00/ 0 赞/ 151 阅读
相关 PHP网站的安全性问题 引用: [PHP漏洞全解(一)-PHP网站安全性问题][PHP_-PHP] 针对PHP的网站主要存在下面几种攻击方式: 1、命令注入(Command I 一时失言乱红尘/ 2022年08月06日 03:28/ 0 赞/ 170 阅读
相关 线程安全性问题总结 一、出现线程安全性问题的条件 (1)在多线程的环境下 (2)必须有共享资源 (3)对共享资源进行非原子性操作 二、解决线程安全性问题的途径 (1)sync 叁歲伎倆/ 2022年05月14日 23:28/ 0 赞/ 179 阅读
相关 Servlet的安全性问题 在默认情况下,容器只会为每一个servlet创建一个实例,当多个请求到达容器时,就会产生多个线程同时访问一个实例的情况,会产生线程安全性问题 解决方法: 1.为Se £神魔★判官ぃ/ 2022年03月31日 10:07/ 0 赞/ 168 阅读
相关 RESTful API安全性问题 1、对客户端做身份认证 HTTP Basic身份认证安全性较低,必须与HTTPS配合使用。 HTTP Digest身份认证可以单独使用,具备中等程度的安全性。 这 以你之姓@/ 2022年03月08日 12:11/ 0 赞/ 240 阅读
相关 Java线程的安全性问题是什么?怎么解决线程的安全性问题? 1.线程的安全性问题是什么?使用什么场景的线程才会出现安全性问题?我们用程序来举例 这是Runable线程类 public class Runable implem 小咪咪/ 2021年12月23日 04:45/ 0 赞/ 258 阅读
还没有评论,来说两句吧...