java web系统的常见安全问题

一、背景

  java开发的系统在发布到互联网后都需要进行安全扫描,本文主要总结开发web系统需要注意的与系统安全相关的问题。因为在做需求开发时,很少产品会将系统安全的因素考虑在内,总觉得实现个需求很简单,就是一些页面,一些接口。以至于在构筑安全的逻辑上没给工时,开发人员也没想太多去实现这些有必要有看不见的东西。所以一般就变成了系统上线后,发现安全问题,再返工补漏洞的现象。显得非常不专业。

二、web系统安全类别

1、数据安全

前端敏感信息暴露

数据库敏感数据暴露

2、认证安全

接口权限认证

3、身份安全

验证码防范

短信验证码防范

4、会话安全

cookie信息安全

session信息安全

5、访问控制安全

水平越权防范

垂直越权防范

随机的数据过短防范

6、输入输出认证安全

文件上传下载漏洞

服务器目录遍历

SQL注入

代码注入

URL被重定向

三、安全编码原则

1、安全异常处理原则

2、安全日志记录原则

3、输入验证,输出编码原则

4、最小权限原则

5、防御性编程原则

四、如何防护

1、sql注入防护

参数化查询语句:要防御 SQL 注入,用户的输入就不能直接拼接在 SQL 语句当中。使用参数化的查询语句,用户的输入就被限制于一个参数当中。

错误消息处理:防范 SQL 注入,还要避免出现一些详细的错误消息,恶意攻击者往往会利用这些报错信息来判断后台 SQL 的拼接形式,甚至是直接利用这些报错注入将数据库中的数据通过报错信息显示出来。

最小权限原则:准确说,最小权限原则不是应用编码范畴的工作,而是DBA应遵循的安全管理原则, 并且最小权限原则本身并不能阻止产生SQL注入漏洞,而是一旦存在SQL注入漏洞,可以降低SQL注入造成的危害

2、越权防护

在web应用中,根据访问客体的不同,常见的访问控制可以分为“基于URL的访问控制”、“基于方法 (method)的访问控制”、“基于数据的访问控制”。越权访问漏洞主要有垂直越权和水平越权。  • 垂直越权漏洞,也称权限提升漏洞,由于Web应用程序没有做权限控制或者仅在菜单上做了权限控制,导致 的恶意用户只要猜测其他管理页面的URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升目 的。 • 水平越权漏洞,Web应用程序接收到用户请求,修改某条数据时,没有判断数据的所属人,或判断数据所属 人时,从用户提交的request参数(用户可控数据)中,获取了数据所属人id,导致恶意攻击者可以通过变 换数据id,或变换所属人id,修改不属于自己的数据。恶意用户可以删除或修改其他人数据。 • OWASP TOP 10 A5 失效的访问控制 • 未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问 其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。

3、路径遍历防护

 路径遍历是指应用程序接收了未经合理校验的用户参数用于进行与文件读取查看相关操作,而该参数包含了特殊的字符(例如“..”、“./”、“.\\”和“:”),使用了这类特殊字符可以摆 脱受保护的限制,越权访问一些受保护的文件、目录或者覆盖敏感数据

4、恶意文件上传防护

由于业务需要,应用程序通常允许用户上传图片或附件,如果程序没有对上传的文件进行检查 的话,攻击者可能会通过上传文件的功能上传一些恶意文件,如 webshell、病毒文件等,可直接获取用户服务器权限或执行恶意脚本、挂黑页等操作。 • 如果上传的文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行,导致终端感染 病毒或木马。 • 如果上传的文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈。 • 攻击者直接上传一个webshell到服务器上,完全控制系统或致使系统瘫痪。 • 攻击者上传大文件到服务器,占用带宽、存储空间,资源耗尽会导致拒绝服务器攻击。

文件上传可以参考以下安全需求进行处理: 1、 服务器配置: (1)将上传目录和上传文件设置为不可执行, 杜绝脚本执行。 (2)应保证服务器安全,避免文件解析漏洞。 2、在服务端对上传文件进行检查: (1)使用白名单控制上传文件类型,即只允许指定扩展名的文件上传。 (2)对上传文件后缀与MIME Type进行匹配校验, 对文件头信息与文件后缀进行匹配校验。 (3)对单个文件大小和总文件数进行限制, 避免拒绝服务攻击 (4)对文件名进行输入校验,显示时进行输出编码。 3、文件存储: (1)上传文件应保存在指定路径下。 (2)对上传文件进行随机数重命名,避免文件被覆盖。 (3)设置上传文件路径, 使用户不能轻易访问自己上传的文件 。 (4) 文件应尽量保存在内容服务器或web目录外部,避免通过web应用直接访问上传的文件。 4、对于图片文件进行二次渲染、压缩, 避免图片写马。 5、校验失败后,记录错误日志信息,内容至少包括时间、用户、IP、操作内容、校验失败的参数及参数内容等。 上传临时文件处理:单个文件夹下文件过多,会导致访问速度下降,建议分散储存,如根据文件名哈希按首字母建立子目录;

5、弱密码防护

 通常认为容易被别人 猜测到或被破解工具破解的口令均为弱口令。 • 弱口令通常危害为数据泄露,当攻击者获取用户口令后,能以用户的身份登录系统、访问数据库、访问操作系统文件等,用户账户所具备的数据权限,攻击者均可查阅。例如查询账户余额,查询数据库表记录,查询服务器敏感文件信息等。 • 执行非法操作,攻击者破解用户口令后,可执行权限范围内的功能操作,例如转账、发表非法言论、篡改删除数据库数据、修改删除服务器文件等。

基本的密码规则:

	/**
	 * 校验复杂度
	 */
	public Boolean checkPWD(String PWD) {

		// 规定的正则表达式
		// (?![a-zA-Z]+$) 表示 字符串不能完全由大小写字母组成
		// (?![A-Z0-9]+$) 表示 字符串不能完全由大写字母和数字组成
		// (?![A-Z\W_]+$) 表示 字符串不能完全由大写字母和特殊字符组成
		// (?![a-z0-9]+$) 表示 字符串不能完全由小写字母和数字组成
		// (?![a-z\W_]+$) 表示 字符串不能完全由小写字母和特殊字符组成
		// (?![0-9\W_]+$) 表示 字符串不能完全由数字和特殊字符组成
		// [a-zA-Z0-9\W_]{8,} 表示 字符串应该匹配大小写字母、数字和特殊字符,至少匹配8次
		String regex = "^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![a-z0-9]+$)(?![A-Z\\W_]+$)(?![a-z\\W_]+$)(?![0-9\\W_]+$)[a-zA-Z0-9\\W_]{8,}$";

		return ReUtil.isMatch(regex, PWD);
	}

6、验证码防护

服务器端未对验证码有效性进行校验,导致验证码绕过。 通常出现的安全问题如下: 验证码前端校验 验证码重复使用 验证码暴力破解

修复建议:  1、服务器端对验证码校验;  2、限制请求次数和请求频率。  3、验证码使用一次后,销毁验证码session,防止验证码多次使用;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/236287.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 文件权限

背景 因为在做一个任务的时候,调接口要到某个路径下的文件下记录log,但是调接口总是报一个错误: SEVERE: Local file cretaion error! I/O exception! File: /xxx/xxx/xxx/xx.log发现是一个创建文件的错误,根据提示,…

PC端视频网站系统源码 系统自带采集功能 附带完整的搭建教程

近年来,视频内容已成为人们日常生活中不可或缺的一部分。下面罗峰给大家分享一款PC端视频网站系统源码,该系统具有强大的采集功能,可轻松实现视频内容的自动更新和丰富。并附带完整的搭建教程,帮助您快速构建属于自己的视频网站。…

做校园外卖平台需要多少人?高校点外卖难题能否快速解决?

众所周知,大学生喜欢订外卖。到饭点前提前下单,下课后不用挤食堂,这种“懒人经济”在校园商圈非常流行,学生对外卖和跑腿等服务的依赖越来越深,外卖需求也在不断增加。但毕竟是在学校,环境因素会影响外卖的…

Java(使用注解的方式)连接数据库增删改查-MyBatis

准备工作: 1.创建一个springboot项目,并添加四个依赖 分别是,MyBatis的启动依赖和安装依赖,SQL的依赖,测试依赖,如下: 2.然后创建一张至少两条数据的表 (表可以用各种图形化工具创…

【开源】基于Vue+SpringBoot的免税店商城管理系统

文末获取源码,项目编号: S 069 。 \color{red}{文末获取源码,项目编号:S069。} 文末获取源码,项目编号:S069。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.2 研究方法 三、系统…

UE4/UE5 修改/还原场景所有Actor的材质

使用蓝图方法: 1.修改场景所有Actor 材质: Wirframe:一个材质类 MatList:获取到的所有模型的全部材质 的列表 TempAllClass:场景中所有获取的 Actor 的列表 功能方法如下: 蓝图代码可复制在&#xff1a…

基于SpringBoot+Vue会员制医疗预约服务管理信息系统(Java毕业设计)

点击咨询源码 大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的…

TensorBoard使用和问题解决

一、什么是TensorBoard? TensorBoard 是一组用于数据可视化的工具,它包含在流行的开源机器学习库 Tensorflow 中。TensorBoard 的主要功能包括: 可视化模型的网络架构跟踪模型指标,如损失和准确性等检查机器学习工作流程中权重、偏差和其他…

ABAP - Function ALV 02 简单开发一个Function ALV

了解Function ALV: https://blog.csdn.net/HeathlX/article/details/134879766?spm1001.2014.3001.5501程序开发步骤:① TCODE:SE38创建程序 ② 编写程序 DATA gt_spfli TYPE TABLE OF spfli.** Layout 变量定义 (固定使用 直接粘贴复制即可) DATA gs…

我的acer电脑U盘装系统前BIOS设置及装系统过程中的操作

1、开机长按F2进入BIOS设置 2、使能F12 3、调整boot顺序,使USB启动的优先级最高 4、按F10保存退出 5、插入U盘开机,boot选择界面无需操作,等待几秒,默认进入U盘系统 由于既使能了F12,又将U盘的优先级进调整到了最高&…

springboot集成knife4j详细教程

使用原生的swagger作为接口文档,功能不够强大,并且默认的ui比较简陋,不符合大众审美。所以实际开发中推荐使用knife4j对swagger进行增强。knife4j的地址:https://gitee.com/xiaoym/knife4j 基本使用 想要使用knife4j非常简单&…

Android获取Wifi网关

公司有这样一个应用场景:有一台球机设备,是Android系统的,它不像手机,它没有触摸屏幕,所以我们对球机的操作很不方便,于是我们搞这样一个设置:点击球机电源键5次分享出一个热点,然后…

UnoCSS 原子化开发初体验

UnoCSS 是一个即时的原子化 CSS 引擎,旨在灵活和可扩展。核心是不拘一格的,所有的 CSS 工具类都是通过预设提供的。再也不用为了取一个 classname 类名而烦恼了。 一、UnoCSS 特点 完全可定制:无核心工具,所有功能都通过预设提供…

【Fastadmin】根据Fieldlist键值组件做一个等级配置的完整示例

目录 1.效果展示: ​编辑 2.建表: 3.html页面 4.controller控制器 5.js 6.model 1.效果展示: 2.建表: 表名:fa_xxfb_config /*Navicat Premium Data TransferSource Server : rootSource Server Type …

WPS Office JS宏实现批量处理Word中的标题和正文的样式

该篇讲解下word文档中的标题和正文批量修改样式,如下图: 前面一篇已讲解了WPS Office宏编辑器操作方法,这里不细讲了,如有不清楚可以查看该篇:https://blog.csdn.net/jiciqiang/article/details/134653657?spm1001.20…

制作蓝牙小车(一)

制作控制蓝牙小车app 想制作一个蓝牙小车,通过手机app程序操控小车运行,制作分2个部分(app制作,蓝牙小车硬件以及程序制作),先完成第一个部分app制作,本次app是通过androidstudio软件来制作安卓…

私域爆款案例拆解-元气森林

一、背景调研 二、引流策略 三、私域运营策略

第十一章 React 封装自定义组件

一、专栏介绍 🌍🌍 欢迎加入本专栏!本专栏将引领您快速上手React,让我们一起放弃放弃的念头,开始学习之旅吧!我们将从搭建React项目开始,逐步深入讲解最核心的hooks,以及React路由、…

客户案例:EDLP在央国企邮件数据合规中的价值与优势

客户背景 某机械制造企业,作为动力设备领域的领军企业,专门从事动力设备的研发、制造与销售。凭借丰富的经验与卓越的技术实力,该企业致力于深度研究动力设备的核心技术,为客户提供高效且可靠的解决方案。 客户需求 作为企业健康…

4 向微服务架构转变

文章目录 小型单体系统为什么选择小型单体系统微服务与生俱来的问题小型单体系统适用于小团队拥抱重构 规划未来拆分的小型单体应用程序新需求和游戏化用户故事游戏化:积分、徽章和排行榜 转向微服务独立的工作流程水平可伸缩性细粒度的非功能需求其他优势劣势 架构…