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,防止验证码多次使用;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.Net6.0 Microsoft.AspNetCore.Http.Abstractions 2.20 已弃用

您想要升级 Microsoft.AspNetCore.Http.Abstractions 包,您需要注意以下几点: Microsoft.AspNetCore.Http.Abstractions 包在 ASP.NET Core 2.2 版本后已经被标记为过时,因为它已经被包含在 Microsoft.AspNetCore.App 框架引用中12。因此&am…

零基础自学Python的最全时间规划表

文章目录 前言第一阶段:熟悉Python第二阶段:软件开发第三阶段:成为程序员关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python…

产品固件烧写方案

1、前言 一成熟的量产的嵌入式产品,软件一般分为BootLoader和App,BootLoader用于启动校验、App升级、App版本回滚等功能,BootLoader在cpu上电第一阶段中运行,之后跳转至App地址执行应用程序。 因此,在发布固件的时候&a…

使用Mockjs模拟(假数据)接口(axios)

一、什么是MockJs Mock.js官网 Mock.wiki.git mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。 二、安装mockjs npm install mockjs 三、 MockJs使用 简单使用: // 使用…

JFrog----常见的开源协议以及应用注意点

文章目录 1. MIT 许可证2. GPL(通用公共许可证)3. LGPL(较宽松的通用公共许可证)4. Apache 许可证 2.05. BSD 许可证开源协议的选择和注意点结论 开源软件近年来在软件开发中变得越来越流行。使用开源软件可以节省时间和资源&…

Unity优化——加速物理引擎1

大家好,这里是七七,今天开始更新物理引擎相关的优化部分了,本文介绍的是物理引擎内部工作情况。 Unity技术有两种不同的物理引擎:用于3D物理的Nvidia的PhysX和用于2D物理的开源项目Box2D。然而,Unity对它们的实现是高…

Nginx rewrite 参数

目录 常用的Nginx 正则表达式 rewrite 和 location的区别 location location 大致分三类: location 常用的匹配规则: location 优先级: rewrite rewrite跳转实现 rewrite 执行顺序如下 语法格式 flag标记说明 rewrite实际操作 基…

【虹科干货】使用Netropy广域网模拟器测试简化SD-WAN测试

文章速览: 为什么需要WAN模拟器?什么是WAN模拟器?用WAN模拟器测试SD-WANSD-WAN损伤测试 现如今大家都在使用SD-WAN产品节省网络成本,但是也面临着一些复杂的算发问题,那么如何简化SD-WAN系统的测试和评估?…

Ubuntu部署EMQX开源版MQTT服务器-Orange Pi部署-服务器部署

一、前言 作为全球最具扩展性的 MQTT 消息服务器,EMQX 提供了高效可靠海量物联网设备连接,能够高性能实时移动与处理消息和事件流数据,本文将介绍如何在Ubuntu 22.04上部署MQTT服务器。我们本次选择开源版,使用离线安装方式部署。…

总结6种@Transactional注解的失效场景

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 引言 昨天有粉丝咨询了…

超卓航科引领冷喷涂增材制造革新,推动先进核反应堆发展

近日,超卓航科凭借其卓越的冷喷涂增材制造技术,成为推动核能领域创新的重要力量。该公司利用冷喷涂工程技术,或为核反应堆的制造和修复开辟了全新的道路。 冷喷涂技术是一种颇具前景的固态粉末沉积方法,可用于涂层制造、增材制造和…

GNSS - PPP软件 - GAMP 在VS2019/2022下完成调试、跑通程序(超详细!)

目录 一、前期准备 二、调试详细步骤 1.VS中新建项目 2.复制源码至项目文件夹 3.将源码中“.c”文件和“.h”文件添加至项目指定位置 4.修改项目属性: (1)【 配置属性 -> C/C ->预处理器 ->预处理器定义】添加如下 (2)【配置属性->链接器->调…

《C++ Primer》第12章 动态内存(二)

参考资料: 《C Primer》第5版《C Primer 习题集》第5版 12.1.5 unique_ptr(P417) unique “拥有”它所指向的对象,某个时刻只能有一个 unique_ptr 指向一个给定对象。 当我们定义一个 unique_ptr 时,需要将其绑定到…

游戏中小地图的制作__unity基础开发教程

小地图的制作 Icon标识制作制作摄像机映射创建地图UI效果“不一样的效果” 在游戏中经常可以看到地图视角的存在,那么地图视角是如何让实现的呢? 这一期教大家制作一个简易的小地图。 💖点关注,不迷路。 老样子,我们还…

Leetcode 131 分割回文串

题意理解: 分割回文子串,可以看作是划分连续的字幕组合——所以也可以用回溯的方法来解决 每个位置选与不选——该位置切割|不切割 对于每一段子串——>判断是否是回文串: 是: 继续切割 不是: 剪枝 解题方法…

Ubuntu Destktop 22.04 设置 ssh 超时时间

Ubuntu Destktop 22.04 使用 ssh 连接服务器时,发现一段时间不操作就会自动断开连接,解决方法如下: 打开 /etc/ssh/ssh_config 文件: sudo vim /etc/ssh/ssh_config在文件最后添加: # ssh 客户端会每隔 30 秒发送一…

在线免费制作各种证件照,有需要的收藏

现在很多场合都需要一寸证件照,比如办理身份证、出国签证等。以往,我们都需要到专门的照相馆拍摄,但是现在,有了随时照微信小程序(抖音和支付搜索亿鸣证件照哦),你可以足不出户就能够制作一寸证…

MySQL InnoDB Replication部署方案与实践

1. 概述 MySQL Innodb ReplicaSet 是 MySQL 团队在 2020 年推出的一款产品,用来帮助用户快速部署和管理主从复制,在数据库层仍然使用的是主从复制技术。 ReplicaSet 主要包含三个组件:MySQL Router、MySQL Server 以及 MySQL Shell 高级客户…

12 位多通道国产芯片ACM32F403/F433 系列,支持 MPU 存储保护功能,应用于工业控制,智能家居等产品中

ACM32F403/F433 芯片的内核基于 ARMv8-M 架构,支持 Cortex-M33 和 Cortex-M4F 指令集。芯片内核 支持一整套DSP指令用于数字信号处理,支持单精度FPU处理浮点数据,同时还支持Memory Protection Unit (MPU)用于提升应用的…

PyTorch张量:内存布局

你可能对 torch 上的某些函数感到困惑,它们执行相同的操作但名称不同。 例如: reshape()、view()、permute()、transpose() 等。 这些函数的做法真的不同吗? 不! 但为了理解它,我们首先需要了解一下张量在 pytorch 中…